home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / tool / multiv / src / multiv.bas < prev    next >
Encoding:
BASIC Source File  |  1995-05-20  |  58.0 KB  |  1,298 lines

  1. 10000 '********************************************************************
  2. 10010 '*                                                                  *
  3. 10020 '*                   マルチデータビュワーMultiV                     *
  4. 10030 '*                                           Version1.1 L93b        *
  5. 10040 '*                  Programmed by OA-X,1994,1995                    *
  6. 10050 '*                                                                  *
  7. 10060 '********************************************************************
  8. 10070 'INIT&SETTINGS
  9. 10080 GOSUB *MULTIV_INIT:CLEAR ,,,1698366,92371,409600:STOP OFF
  10. 10090 ON ERROR GOTO *MULTIV_ERR
  11. 10100 ON KEY(10) GOSUB *END:KEY(10) ON
  12. 10110 DEFLNG F:CD STOP
  13. 10120 GOSUB *GET_CDIR
  14. 10130 LOADM DRV$+"V02Play.Rex",0
  15. 10140 LOADM DRV$+"Dos.Rex",50000
  16. 10150 LOADM DRV$+"PCD_Play.Rex",91024
  17. 10160 DEF SPRITE 99,0:CONSOLE 0,25,0
  18. 10170 DIM ST1%(640*20),ST2%(640*13),EP(100),CDPLAY!(INT((INT((152+7)/8)*130*4+4-1)/4))
  19. 10180 DIM WORK(960000/4),DNAME(182),FWIN!(INT((INT((242+7)/8)*112*4+4-1)/4)),HICDRI%(8)
  20. 10190 DIM SCRN2%(INT((INT((399+7)/8)*238*4+2-1)/2)),F_WAT(((32*32/8)+3)/4+1),F_WAT1(((32*32/8)+3)/4+1)
  21. 10200 DIM MV1&(10),MV2$(10),F_NAME2$(500),NODISC!(INT((INT((19+7)/8)*18*4+4-1)/4))
  22. 10210 DIM FS%(INT((INT((399+7)/8)*238*4+2-1)/2)),F_STD(((32*32/8)+3)/4+1),F_STD1(((32*32/8)+3)/4+1)
  23. 10220 DIM F_DRV(26)  ,F_NAME$(500) ,F_SIZE&(500) ,F_ATTR&(500),F_DATE$(500)
  24. 10230 DIM F_BTNX1(18),F_BTNY1(18),F_BTNX2(18),F_BTNY2(18),REPEAT!(INT((INT((20+7)/8)*8*4+4-1)/4))
  25. 10240 DIM F_ICN(9),F_PAT(((32*32/8)+3)/4+1),F_PAT1(((32*32/8)+3)/4+1),FS_ICN%(24*24*6)
  26. 10250 CONST_SDKMAX& = 32           'サイドワーク確保数
  27. 10260 CONST_SDKNAMELENMAX& = 32    'サイドワークネーム最大長
  28. 10270 DIM SDKNAME$(CONST_SDKMAX& - 1),WORK&(6*24*460\8),BTN%(416*2)
  29. 10280 SDKKEY$ = ""
  30. 10290 FOR I=0 TO CONST_SDKMAX& - 1 'サイドワークネーム最大長を確保
  31. 10300  SDKNAME$(I) = SPACE$(CONST_SDKNAMELENMAX&)
  32. 10310 NEXT I
  33. 10320 GOSUB *SDKINIT               '初期化サブへ
  34. 10330 IF SDKMAX& >= 0 THEN MENUOK&=1
  35. 10340 IF SDKMAX& < 0 THEN SDKMAX&=0
  36. 10350 DEF FONT "システム   12ドット":ON EROR GOTO *MULTIV_ERR
  37. 10360 LOAD@ DRV$+"SHUTTER1.OAX",ST1%
  38. 10370 LOAD@ DRV$+"SHUTTER2.OAX",ST2%
  39. 10380 LOAD@ DRV$+"MOS_STD1.OAX",F_STD
  40. 10390 LOAD@ DRV$+"MOS_STD2.OAX",F_STD1
  41. 10400 LOAD@ DRV$+"MOS_WAT1.OAX",F_WAT
  42. 10410 LOAD@ DRV$+"MOS_WAT2.OAX",F_WAT1
  43. 10420 LOAD@ DRV$+"OAX_FS.OAX",FS%
  44. 10430 LOAD@ DRV$+"ICON.OAX",FS_ICN%
  45. 10440 LOAD@ DRV$+"DRV_NAME.OAX",DNAME
  46. 10450 LOAD@ DRV$+"CDPLAYER.OAX",CDPLAY!
  47. 10460 LOAD@ DRV$+"NODISC.OAX",NODISC!
  48. 10470 LOAD@ DRV$+"REPEAT.OAX",REPEAT!
  49. 10480 LOAD@ DRV$+"MULTIV.TIF":GOSUB *SHUT1
  50. 10490 MOUSE 0:MOUSE 1,320,240,0
  51. 10500 F_SHAPE=80:GOSUB *F_初期化:GOSUB *F_マウスカーソル設定
  52. 10510 MOUSE 1,MOUSE(0),MOUSE(1),1
  53. 10520 COLOR 0,0,7,4:GOSUB *MOS_SPEEDSET:VOL=127:HVOL=127:STYLE&=1
  54. 10530 *MAIN
  55. 10540 WHILE DUMMY=0
  56. 10550 DUMMY=MOUSE(3,0):GOSUB *DATE_TIME:IF EUP_R$<>"" THEN GOSUB *EP_REPEAT
  57. 10560 WEND
  58. 10570 BX=MOUSE(0):BY=MOUSE(1):DUMMY=0
  59. 10580 IF BX>=0 AND BX<=106 AND BY>=0 AND BY<=19 THEN GOSUB *ABOUT_MENU:DUMMY=0:GOTO 10540
  60. 10590 IF BX>=107 AND BX<=178 AND BY>=0 AND BY<=19 THEN *FILE_CLICK:DUMMY=0:GOTO 10540
  61. 10600 IF BX>=179 AND BX<=228 AND BY>=0 AND BY<=19 THEN GOSUB *CD_CLICK:DUMMY=0:GOTO 10540
  62. 10610 IF BX>=610 AND BX<=629 AND BY>=0 AND BY<=19 THEN EN_MOS_FLAG=1:GOTO *END
  63. 10620 GOTO 10540
  64. 10630 *ABOUT_MENU
  65. 10640 LINE(0,0)-(106,19),PSET,%8,B
  66. 10650 LINE(1,1)-(105,18),PSET,%8,B
  67. 10660 GOSUB *SDK_MAIN:RETURN
  68. 10670 *MV_ABOUT:PUT@A (0,20)-(6*24-1,479),WORK&,PSET
  69. 10680 GET@A(160,120)-(479,359),SCRN2%
  70. 10690 LOAD@ DRV$+"ABOUT.TIF",(160,120):SYMBOL(182,328),STR$(FRE(4))+"Bytes Free",.75!,.75!,%8,,,1
  71. 10700 WHILE DUMMY=0
  72. 10710 DUMMY=MOUSE(3,1):GOSUB *DATE_TIME
  73. 10720 WEND:LINE(0,0)-(1,18),PSET,%15,B:LINE(0,0)-(105,1),PSET,%15,B:PSET(0,19),%15:PSET(106,0),%15
  74. 10730 PUT@A(160,120)-(479,359),SCRN2%:GOTO 10540
  75. 10740 *CD_CLICK
  76. 10750 LINE(179,0)-(228,19),PSET,%1,B
  77. 10760 LINE(180,1)-(227,18),PSET,%1,B
  78. 10770 WHILE MOUSE(2,0)=-1
  79. 10780 IF MOUSE(0)<179 AND MOUSE(1)<20 THEN GOSUB *CD_ERASE:GOTO *FILE_CLICK
  80. 10790 WEND:IF MOUSE(0)>228 OR MOUSE(1)>19 THEN GOSUB *CD_ERASE:GOTO 10540
  81. 10800 LINE(180,0)-(228,1),PSET,%15,BF:LINE(179,0)-(180,19),PSET,%15,BF:PSET(228,1),%8
  82. 10810 LINE(181,18)-(226,19),PSET,%8,BF:LINE(227,2)-(228,19),PSET,%8,BF:PSET(180,19),%8
  83. 10820 GOSUB *MV_CDPLAY:RETURN
  84. 10830 *FILE_CLICK
  85. 10840 LINE(107,0)-(178,19),PSET,%1,B
  86. 10850 LINE(108,1)-(177,18),PSET,%1,B
  87. 10860 WHILE MOUSE(2,0)=-1:IF MOUSE(0)>178 AND MOUSE(1)<20 THEN GOSUB *FILE_ERASE:GOTO *CD_CLICK
  88. 10870 IF MOUSE(0)<107 THEN GOSUB *FILE_ERASE:GOTO *ABOUT_MENU
  89. 10880 WEND:IF MOUSE(1)>19 THEN GOSUB *FILE_ERASE:DUMMY=0:GOTO 10540
  90. 10890 LINE(108,0)-(178,1),PSET,%15,BF
  91. 10900 LINE(107,0)-(108,19),PSET,%15,BF
  92. 10910 LINE(109,18)-(178,19),PSET,%8,BF
  93. 10920 LINE(177,2)-(178,19),PSET,%8,BF
  94. 10930 PSET(178,1),%8:PSET(108,19),%8
  95. 10940 GET@A(120,121)-(518,358),SCRN2%:FS_PRA$="":GOSUB *FILE_SELECTOR:GOTO *RETED
  96. 10950 *FILE_SELECTOR:'==========================
  97. 10960 '         16色用ファイルセレクタ
  98. 10970 '=========================================
  99. 10980 DEF FONT "システム   12ドット"
  100. 10990 GOSUB *F_初期化
  101. 11000 F_POSX=10:F_POSY=5:GOSUB *F_ファイルセレクタ
  102. 11010 FS_PRA$=F_FILENAME$:RETURN
  103. 11020 '----------------------------------------------------------------
  104. 11030 *F_初期化
  105. 11040 '----------------------------------------------------------------
  106. 11050  SEACHICNSEL&=50000:MEMCPY&=50005:GETFREESPACE&=50010:ISFIXED&=50015:ISEXIST&=50020
  107. 11060  FINDFIRST&=50025 :FINDNEXT&=50030:GETDRV&=50035:GETDIR&=50040
  108. 11070 '
  109. 11080  F_BACK=8:F_LWHITE=7 '16色
  110. 11090  F_NUM=0:F_WLD$="":F_STR$=SPACE$(100)
  111. 11100  F_ICN_SEC=CALLM(SEACHICNSEL&)
  112. 11110 '
  113. 11120  RESTORE *F_ボタン位置データ
  114. 11130  FOR F_I=0 TO 9
  115. 11140   READ F_BTNX1(F_I),F_BTNY1(F_I),F_BTNX2(F_I),F_BTNY2(F_I)
  116. 11150  NEXT
  117. 11160  FOR F_I=10 TO 17
  118. 11170   F_BTNX1(F_I)=F_BTNX1(9):F_BTNX2(F_I)=F_BTNX2(9)
  119. 11180   F_BTNY1(F_I)=F_BTNY1(F_I-1)+14:F_BTNY2(F_I)=F_BTNY2(F_I-1)+14
  120. 11190  NEXT
  121. 11200 '
  122. 11210 RESTORE *F_アイコンデータ:FOR F_I=0 TO 9:READ F_ICN(F_I):NEXT
  123. 11220 RETURN
  124. 11230 '
  125. 11240 *F_ボタン位置データ
  126. 11250  DATA 132,148,148,185, 153,148,213,185, 218,148,234,185, 491,147,506,163
  127. 11260  DATA 493,276,505,290, 493,292,505,305, 377,320,434,344, 451,323,502,341
  128. 11270  DATA 122,123,134,135, 246,166,487,179
  129. 11280 *F_アイコンデータ
  130. 11290 DATA 70,0,72,77,0,77,76,78,69,79
  131. 11300 '
  132. 11310 '----------------------------------------------------------------
  133. 11320 *F_ファイルセレクタ
  134. 11330 '----------------------------------------------------------------
  135. 11340  F_FILENAME$="":F_FILEPATH$="":F_FILEDRV$="":F_TOP=0
  136. 11350  GOSUB *F_画面表示
  137. 11360  GOSUB *F_ドライブ情報取得:GOSUB *F_ドライブ状況表示
  138. 11370  GOSUB *F_ファイル情報取得:GOSUB *F_ファイル名表示
  139. 11380 *F_LOOP
  140. 11390  GOSUB *F_マウスボタンチェック
  141. 11400  ON F_BTN+1 GOTO 11510,11580,11630,11690,11750,11780,11810,11870,11890
  142. 11410 '---リスト
  143. 11420  F_I=F_TOP+F_BTN-8:IF F_I>=F_NUM GOTO *F_LOOP
  144. 11430  IF F_ATTR&(F_I) = &H10 THEN
  145. 11440    F_CMD$="cd "+F_NAME$(F_I):SHELL F_CMD$:GOTO 11580
  146. 11450  ELSE
  147. 11460    F_FILENAME$=LEFT$(F_NAME$(F_I)+SPACE$(14),12)
  148. 11470    LINE(251,297)-(322,308),PSET,%15,BF:SYMBOL(251,297),F_FILENAME$,.75!,.75!,%8
  149. 11480  ENDIF
  150. 11490  GOTO *F_LOOP
  151. 11500 '---<
  152. 11510  IF F_DRV(0)-1<>0 THEN F_DRV(0)=F_DRV(0)-1 ELSE F_DRV(0)=26
  153. 11520  IF F_DRV(F_DRV(0))<0 THEN 11510
  154. 11530  LINE(166,157)-(170,163),PSET,%15,BF:GOSUB *PUT_DRIVENAME
  155. 11540  LINE(164,236)-(204,248),PSET,%15,BF:F_BTN_ATR=MOUSE(3,0):F_BTN_ATR=0:F_I=0
  156. 11550  WHILE F_BTN_ATR=0 AND F_I<130:F_I=F_I+1:F_BTN_ATR=MOUSE(3,0):WAIT 1:WEND
  157. 11560  IF F_BTN_ATR=0 THEN 11580 ELSE *F_LOOP
  158. 11570 '---A
  159. 11580  F_CMD$=CHR$(&H40+F_DRV(0))+":":SHELL F_CMD$
  160. 11590  GOSUB *F_ドライブ状況表示
  161. 11600  F_TOP=0:GOSUB *F_ファイル情報取得:GOSUB *F_ファイル名表示
  162. 11610  GOTO *F_LOOP
  163. 11620 '--->
  164. 11630  IF F_DRV(0)+1<>27 THEN F_DRV(0)=F_DRV(0)+1 ELSE F_DRV(0)=1
  165. 11640  IF F_DRV(F_DRV(0))<0 THEN 11630
  166. 11650  LINE(166,157)-(170,163),PSET,%15,BF:GOSUB *PUT_DRIVENAME
  167. 11660  LINE(164,236)-(204,248),PSET,%15,BF:F_BTN_ATR=MOUSE(3,0):F_BTN_ATR=0:F_I=0
  168. 11670  WHILE F_BTN_ATR=0 AND F_I<130:F_I=F_I+1:F_BTN_ATR=MOUSE(3,0):WAIT 1:WEND
  169. 11680  IF F_BTN_ATR=0 THEN 11580 ELSE *F_LOOP
  170. 11690 '---親
  171. 11700  CALLM GETDIR&,0,VARPTR(F_STR$)
  172. 11710  IF LEFT$(F_STR$,INSTR(F_STR$,CHR$(0)))=CHR$(0) THEN 11730
  173. 11720  SHELL "cd .."
  174. 11730  GOTO 11580
  175. 11740 '---↑
  176. 11750  IF F_TOP<>0 THEN F_TOP=F_TOP-1:DSPFLAG=-1:GET@A(246,166)-(487,277),FWIN!:GOSUB *F_ファイル名表示
  177. 11760  GOTO *F_LOOP
  178. 11770 '---↓
  179. 11780  IF F_TOP<F_NUM-10 THEN F_TOP=F_TOP+1:DSPFLAG=1:GET@A(246,180)-(487,291),FWIN!:GOSUB *F_ファイル名表示
  180. 11790  GOTO *F_LOOP
  181. 11800 '---実行
  182. 11810  IF F_FILENAME$="" THEN *F_LOOP
  183. 11820  CALLM GETDIR&,0,VARPTR(F_STR$)
  184. 11830  F_FILEPATH$="\"+LEFT$(F_STR$,INSTR(F_STR$,CHR$(0)))
  185. 11840  F_FILEDRV$=CHR$(&H40+F_DRV(0))
  186. 11850  GOTO *F_BYE
  187. 11860 '---取消
  188. 11870  F_FILENAME$="":F_FILEPATH$="":GOTO *F_BYE
  189. 11880 '---Close
  190. 11890  F_FILENAME$="":F_FILEPATH$="":GOTO *F_BYE
  191. 11900 *F_BYE
  192. 11910 RETURN
  193. 11920 '----------------------------------------------------------------
  194. 11930 *F_マウスボタンチェック
  195. 11940 '----------------------------------------------------------------
  196. 11950  F_BTN=-1:F_BTN_ATR=0
  197. 11960  WHILE F_BTN=-1
  198. 11970   WHILE MOUSE(2,0)=0:WEND:F_X=MOUSE(0):F_Y=MOUSE(1)
  199. 11980   F_I=0
  200. 11990   WHILE F_I<=17 AND F_BTN=-1
  201. 12000    F_X1=F_BTNX1(F_I):F_X2=F_BTNX2(F_I)
  202. 12010    F_Y1=F_BTNY1(F_I):F_Y2=F_BTNY2(F_I)
  203. 12020    IF F_X1<=F_X AND F_X2>=F_X AND F_Y1<=F_Y AND F_Y2>=F_Y THEN
  204. 12030      IF F_I=4 OR F_I=5 THEN GOSUB *SCROLL_BTN:F_BTN=F_I:GOTO 12120
  205. 12040      LINE(F_X1,F_Y1)-(F_X2,F_Y2),XOR,%7,BF
  206. 12050      IF F_I<>4 AND F_I<>5 THEN WHILE MOUSE(2,0) OR MOUSE(2,1):WEND
  207. 12060      LINE(F_X1,F_Y1)-(F_X2,F_Y2),XOR,%7,BF
  208. 12070      F_BTN=F_I
  209. 12080    ENDIF
  210. 12090    F_I=F_I+1
  211. 12100   WEND
  212. 12110  WEND
  213. 12120  IF F_BTN<>4 AND F_BTN<>5 THEN F_BTN_ATR=MOUSE(3,0):WAIT 20:F_BTN_ATR=MOUSE(3,0)
  214. 12130 RETURN
  215. 12140 '-----------------------------
  216. 12150 *F_画面表示
  217. 12160 '-----------------------------
  218. 12170 PUT@A(120,121)-(518,358),FS%
  219. 12180 RETURN
  220. 12190 '-----------------------------
  221. 12200 *F_ドライブ状況表示
  222. 12210 '-----------------------------
  223. 12220  LINE(165,156)-(169,161),PSET,%15,BF:GOSUB *PUT_DRIVENAME
  224. 12230  F_FREE=CALLM(GETFREESPACE&,0)
  225. 12240  IF F_FREE>1024 AND F_FREE<1024*1024 THEN LINE(164,236)-(204,248),PSET,%15,BF:SYMBOL(164,235),RIGHT$(SPACE$(6)+STR$(INT(F_FREE/1024)),6),.75!,.75!,%8
  226. 12250  LINE(246,166)-(481,291),PSET,%15,BF
  227. 12260 '
  228. 12270  CALLM GETDIR&,0,VARPTR(F_STR$)
  229. 12280  F_I=INSTR(F_STR$,CHR$(0)):F_J=F_I
  230. 12290  WHILE F_I>1 AND MID$(F_STR$,F_I,1)<>"\":F_I=F_I-1:WEND
  231. 12300  LINE(246,148)-(331,161),PSET,%15,BF:GOSUB *DIR_CUT
  232. 12310  SYMBOL(249,149),FS_CDIR$,.75!,.75!,%8
  233. 12320 '
  234. 12330  LINE(178,155)-(202,179),PSET,%15,BF
  235. 12340  IF F_FREE>=0 THEN
  236. 12350    GOSUB *DRV_CHECK
  237. 12360    PUT@A(178,155)-(201,178),FS_ICN%,,,,,24*24*F_DRV_ICN
  238. 12370  ENDIF
  239. 12380 RETURN
  240. 12390 '-----------------------------
  241. 12400 *F_ファイル名表示
  242. 12410 '-----------------------------
  243. 12420  F_I=1:FX=248:FY=153:IF DSPFLAG=0 THEN *PUT_FIL
  244. 12430  IF DSPFLAG=-1 THEN
  245. 12440   FY=167:PUT@A(246,180)-(487,291),FWIN!:LINE(246,166)-(487,179),PSET,%15,BF
  246. 12450   IF F_ATTR&(F_I+F_TOP)=&H10 THEN
  247. 12460    SYMBOL(FX,FY),"<"+LEFT$(F_NAME$(F_I+F_TOP)+SPACE$(20),12)+">",.75!,.75!,%8
  248. 12470    SYMBOL(FX+143,FY),F_DATE$(F_I+F_TOP),.75!,.75!,%8
  249. 12480   ELSE
  250. 12490    SYMBOL(FX,FY)," "+F_NAME2$(F_I+F_TOP),.75!,.75!,%8
  251. 12500    SYMBOL(FX+90,FY)," "+RIGHT$(SPACE$(14)+STR$(F_SIZE&(F_I+F_TOP)),8),.75!,.75!,%8
  252. 12510    SYMBOL(FX+143,FY),F_DATE$(F_I+F_TOP),.75!,.75!,%8
  253. 12520   ENDIF
  254. 12530  ELSE
  255. 12540   FY=279:PUT@A(246,166)-(487,277),FWIN!:LINE(246,278)-(487,291),PSET,%15,BF
  256. 12550   IF F_ATTR&(F_I+F_TOP+8)=&H10 THEN
  257. 12560    SYMBOL(FX,FY),"<"+LEFT$(F_NAME$(F_I+F_TOP+8)+SPACE$(20),12)+">",.75!,.75!,%8
  258. 12570    SYMBOL(FX+143,FY),F_DATE$(F_I+F_TOP+8),.75!,.75!,%8
  259. 12580   ELSE
  260. 12590    SYMBOL(FX,FY)," "+F_NAME2$(F_I+F_TOP+8),.75!,.75!,%8
  261. 12600    SYMBOL(FX+90,FY)," "+RIGHT$(SPACE$(14)+STR$(F_SIZE&(F_I+F_TOP+8)),8),.75!,.75!,%8
  262. 12610    SYMBOL(FX+143,FY),F_DATE$(F_I+F_TOP+8),.75!,.75!,%8
  263. 12620   ENDIF
  264. 12630  ENDIF
  265. 12640 DSPFLAG=0:RETURN
  266. 12650 '-----------------------------
  267. 12660 *F_ドライブ情報取得
  268. 12670 '-----------------------------
  269. 12680  FOR F_I=1 TO 26:F_DRV(F_I)=CALLM(ISEXIST&,F_I):NEXT
  270. 12690 FOR F_I=1 TO 16
  271. 12700  F_DRV(F_I)=CALLM(ISEXIST&,F_I)
  272. 12710  IF F_DRV(F_I)>=0 THEN
  273. 12720    F_DRV(F_I)=INP(&H31D8+F_I*4,1):F_J=CALLM(ISFIXED&,F_I)
  274. 12730    IF F_DRV(F_I)=2 AND F_J=0 THEN F_DRV(F_I)=6
  275. 12740    IF F_DRV(F_I)=255 AND F_J=0 THEN F_DRV(F_I)=7
  276. 12750    IF F_DRV(F_I)=255 THEN F_DRV(F_I)=2
  277. 12760  ENDIF
  278. 12770 NEXT
  279. 12780 F_DRV(17)=8
  280. 12790 FOR F_I=18 TO 26
  281. 12800  IF F_DRV(F_I)>=0 THEN F_DRV(F_I)=9
  282. 12810 NEXT
  283. 12820  F_DRV(0)=CALLM(GETDRV&,VARPTR(F_STR$))
  284. 12830 RETURN
  285. 12840 '-----------------------------
  286. 12850 *F_ファイル情報取得
  287. 12860 '-----------------------------
  288. 12870  F_SHAPE=81:GOSUB *F_マウスカーソル設定
  289. 12880  F_NUM=0:F_WLD$="*.*"+CHR$(0)
  290. 12890  F_I=CALLM(FINDFIRST&,VARPTR(F_WLD$),&H10,VARPTR(F_STR$),VARPTR(F_ATTR&(0)),VARPTR(F_SIZE&(0)),VARPTR(F_DATE$(0)))
  291. 12900  IF F_I>=0 THEN
  292. 12910   WHILE F_I>=0
  293. 12920    F_I=CALLM(FINDNEXT&,VARPTR(F_STR$),VARPTR(F_ATTR&(0)),VARPTR(F_SIZE&(0)),VARPTR(F_DATE$(0))):F_NUM=F_NUM+1
  294. 12930   WEND
  295. 12940  ELSE
  296. 12950   F_NUM=0:GOTO 13060
  297. 12960  ENDIF
  298. 12970  F_I=1:'F_NAME$(1)="..":F_ATTR&(1)=&H10:F_DATE$(1)=" ":F_I=2
  299. 12980  CALLM FINDFIRST&,VARPTR(F_WLD$),&H10,VARPTR(F_STR$),VARPTR(F_ATTR&(F_I)),VARPTR(F_SIZE&(F_I)),VARPTR(F_J)
  300. 12990  GOSUB *F_情報整理
  301. 13000  F_I=2
  302. 13010  WHILE F_I<=F_NUM
  303. 13020    CALLM FINDNEXT&,VARPTR(F_STR$),VARPTR(F_ATTR&(F_I)),VARPTR(F_SIZE&(F_I)),VARPTR(F_J)
  304. 13030    GOSUB *F_情報整理:F_I=F_I+1
  305. 13040  WEND
  306. 13050  GOSUB *F_ソート
  307. 13060  F_SHAPE=80:GOSUB *F_マウスカーソル設定
  308. 13070 RETURN
  309. 13080 '
  310. 13090 *F_情報整理
  311. 13100  F_NAME$(F_I)=LEFT$(F_STR$,INSTR(F_STR$,CHR$(0))-1)
  312. 13110  IF F_ATTR&(F_I)<>&H10 THEN
  313. 13120    IF INSTR(F_NAME$(F_I),".")<>0 THEN
  314. 13130      F_NAME2$(F_I)=LEFT$(LEFT$(F_NAME$(F_I),INSTR(F_NAME$(F_I),".")-1)+SPACE$(8),9)+RIGHT$(F_NAME$(F_I),3):GOSUB *SUFFIX_CUT
  315. 13140    ELSE
  316. 13150      F_NAME2$(F_I)=F_NAME$(F_I):GOSUB *SUFFIX_CUT
  317. 13160    ENDIF
  318. 13170  ENDIF
  319. 13180  F_DATE$(F_I)=STR$(F_J\(2^25)+80)+"-"
  320. 13190  F_DATE$(F_I)=F_DATE$(F_I)+RIGHT$(STR$(F_J\(2^21) AND 15),2)+"-"
  321. 13200  F_DATE$(F_I)=F_DATE$(F_I)+RIGHT$(STR$(F_J\(2^16) AND 31),2)+" "
  322. 13210  F_DATE$(F_I)=F_DATE$(F_I)+RIGHT$(STR$(F_J\(2^11) AND 31),2)+":"
  323. 13220  F_DATE$(F_I)=F_DATE$(F_I)+RIGHT$(STR$(F_J\(2^5) AND 63),2):'WRITE #10,F_DATE$(F_I)
  324. 13230  IF MID$(F_DATE$(F_I),2,1)=" " THEN F_DATE$(F_I)=" 0"+RIGHT$(F_DATE$(F_I),13)
  325. 13240  IF MID$(F_DATE$(F_I),5,1)=" " THEN F_DATE$(F_I)=LEFT$(F_DATE$(F_I),4)+"0"+RIGHT$(F_DATE$(F_I),10)
  326. 13250  IF MID$(F_DATE$(F_I),8,1)=" " THEN F_DATE$(F_I)=LEFT$(F_DATE$(F_I),7)+"0"+RIGHT$(F_DATE$(F_I),7)
  327. 13260  IF MID$(F_DATE$(F_I),11,1)=" " THEN F_DATE$(F_I)=LEFT$(F_DATE$(F_I),10)+"0"+RIGHT$(F_DATE$(F_I),4)
  328. 13270  IF MID$(F_DATE$(F_I),14,1)=" " THEN F_DATE$(F_I)=LEFT$(F_DATE$(F_I),13)+"0"+RIGHT$(F_DATE$(F_I),1)
  329. 13280 RETURN
  330. 13290 '-----------------------------
  331. 13300 *F_ソート
  332. 13310 '-----------------------------
  333. 13320  FOR F_I=1 TO F_NUM
  334. 13330   IF F_ATTR&(F_I)=&H10 THEN F_NAME$(F_I)=CHR$(1)+F_NAME$(F_I)
  335. 13340  NEXT
  336. 13350 '
  337. 13360  F_N=F_NUM
  338. 13370  FOR F_CHECK=F_N/2 TO 1 STEP -1
  339. 13380   GOSUB *F_下方移動
  340. 13390  NEXT
  341. 13400 '
  342. 13410  WHILE F_N>1
  343. 13420   SWAP F_NAME$(F_N),F_NAME$(1):SWAP F_SIZE&(F_N),F_SIZE&(1):SWAP F_NAME2$(F_N),F_NAME2$(1)
  344. 13430   SWAP F_DATE$(F_N),F_DATE$(1):SWAP F_ATTR&(F_N),F_ATTR&(1)
  345. 13440   F_N=F_N-1
  346. 13450   F_CHECK=1:GOSUB *F_下方移動
  347. 13460  WEND
  348. 13470 '
  349. 13480  FOR F_I=1 TO F_NUM
  350. 13490   IF F_ATTR&(F_I)=&H10 THEN F_NAME$(F_I)=RIGHT$(F_NAME$(F_I),LEN(F_NAME$(F_I))-1)
  351. 13500  NEXT
  352. 13510 '
  353. 13520  F_J=1
  354. 13530  FOR F_I=1 TO F_NUM
  355. 13540   IF F_NAME$(F_I)<>"." AND F_NAME$(F_I)<>".." THEN
  356. 13550     F_NAME$(F_J)=F_NAME$(F_I):F_ATTR&(F_J)=F_ATTR&(F_I):F_NAME2$(F_J)=F_NAME2$(F_I)
  357. 13560     F_DATE$(F_J)=F_DATE$(F_I):F_SIZE&(F_J)=F_SIZE&(F_I)
  358. 13570     F_J=F_J+1
  359. 13580   ENDIF
  360. 13590  NEXT
  361. 13600  F_NUM=F_J
  362. 13610 RETURN
  363. 13620 '
  364. 13630 *F_下方移動
  365. 13640  F_I=F_CHECK
  366. 13650  F_J=F_I*2:F_END=0
  367. 13660  WHILE F_J<=F_N AND F_END=0
  368. 13670   IF F_J<F_N THEN IF F_NAME$(F_J)<F_NAME$(F_J+1) THEN F_J=F_J+1
  369. 13680   IF F_NAME$(F_I)>=F_NAME$(F_J) THEN
  370. 13690     F_END=1
  371. 13700   ELSE
  372. 13710     SWAP F_NAME$(F_I),F_NAME$(F_J):SWAP F_DATE$(F_I),F_DATE$(F_J):SWAP F_NAME2$(F_I),F_NAME2$(F_J)
  373. 13720     SWAP F_ATTR&(F_I),F_ATTR&(F_J):SWAP F_SIZE&(F_I),F_SIZE&(F_J)
  374. 13730     F_I=F_J:F_J=F_I*2
  375. 13740   ENDIF
  376. 13750  WEND
  377. 13760 RETURN
  378. 13770 '
  379. 13780 '-----------------------------
  380. 13790 *F_マウスカーソル設定
  381. 13800 '-----------------------------
  382. 13810  IF F_SHAPE=80 THEN MOUSE 6,0,F_STD,F_STD1,1,1
  383. 13820  IF F_SHAPE=81 THEN MOUSE 6,0,F_WAT,F_WAT1,16,17
  384. 13830 RETURN
  385. 13840 *RETED:PUT@A(120,121)-(518,358),SCRN2%:CLS 4:FS_PRA$=LEFT$(FS_PRA$,12):GOSUB *FS_BRANK_CUT
  386. 13850 *拡張子:CH=0
  387. 13860 RESTORE *拡張子_DATA:IF FS_PRA$="" THEN 10510
  388. 13870 CH=CH+1
  389. 13880 READ CC$:IF CC$="終" THEN GOSUB *TEXT:GOTO 10510
  390. 13890 IF RIGHT$(FS_PRA$,3)<>CC$ THEN 13870
  391. 13900 ON CH GOSUB *TEXT,*TEXT,*TEXT,*TEXT,*EUP,*TIF,*SND,*TIF,*MUS,*FMB,*PMB,*MOV,*V02,*EXP
  392. 13910 GOTO 10510
  393. 13920 *拡張子_DATA
  394. 13930 DATA "TXT","DOC","GGG","MAN","EUP","TIF","SND","JPG","MUS","FMB","PMB","MVE","V02","EXP","終"
  395. 13940 *TEXT:CONSOLE 13,12:GOSUB *OPEN:COLOR 1
  396. 13950 OPEN FS_PRA$ FOR INPUT AS #5
  397. 13960 FOR I=1 TO 12:LINE INPUT #5,ONEL$:IF I>1 THEN PRINT
  398. 13970 L=LEN(ONEL$)
  399. 13980 IF L>80 THEN I=I+1:L=L-80:GOTO 13980
  400. 13990 PRINT ONEL$;
  401. 14000 IF EOF(5)=-1 THEN CLOSE #5:GOTO *MOUSE_WAIT
  402. 14010 NEXT
  403. 14020 WHILE EOF(5)=0
  404. 14030 IF MOUSE(2,1)<>0 THEN CLS 4:GOSUB *SHUT1:CONSOLE 0,25:RETURN
  405. 14040 IF MOUSE(2,0)<>0 THEN PRINT:LINE INPUT #5,ONEL$:PRINT ONEL$;
  406. 14050 IF EUP_R$<>"" THEN GOSUB *EP_REPEAT:COLOR 1
  407. 14060 WEND:CLOSE #5:GOTO *MOUSE_WAIT
  408. 14070 *EUP:BGM 1:EUP_MODE=1:EUP_R$=FS_PRA$
  409. 14080 ERASE EP:DIM EP(150000/4)
  410. 14090 COLOR 6:LOCATE 2,3:PRINT "Wait...":GOSUB *EUP_GETINFORM
  411. 14100 CLS 4
  412. 14110 LOCATE 2,3:PRINT "*EUP-Player*"
  413. 14120 'OPEN "I",#4,FS_PRA$:TIT$=INPUT$(32,#4):CLOSE #4
  414. 14130 COLOR 6:LOCATE 2,4:PRINT "Filename= ";FS_PRA$
  415. 14140 LOCATE 2,5:PRINT "Title   = ";TIT$
  416. 14150 LOCATE 2,6:PRINT "Repeat  =      ON"
  417. 14160 LOCATE 2,7:PRINT "FMB file= ";FFN$
  418. 14170 LOCATE 2,8:PRINT "PMB file= ";PFN$
  419. 14180 LOCATE 2,10:PRINT "BGM-Left,Quit-Right":PLAY@ EP,0
  420. 14190 GOSUB *EP_REPEAT
  421. 14200 IF MOUSE(2,0)<>0 THEN GOTO *BGM
  422. 14210 IF MOUSE(2,1)<>0 THEN PLAY OFF:CLS 4:CONSOLE 0,25:EUP_MODE=0:EUP_R$="":RETURN
  423. 14220 COLOR 6:LOCATE 2,9:PRINT USING "Measure =    ####";PLAY(1)+1
  424. 14230 GOSUB *DATE_TIME:GOTO 14190
  425. 14240 *BGM:CLS 4:EUP_MODE=0:RETURN
  426. 14250 *TIF
  427. 14260 CLS:ON ERROR GOTO *ER:MOUSE 1,0,0,0
  428. 14270 'FOR I=0 TO 2:E=0
  429. 14280 'IF I=1 THEN SCREEN@ 1,2 ELSE SCREEN@ I
  430. 14290 'LOAD@ FS_PRA$
  431. 14300 'IF E=0 THEN 14130 ELSE NEXT:PRINT "違うんじゃないのぉ?":WAIT 100:GOTO 14160
  432. 14310 'WHILE TIF_ENDFLAG=0 
  433. 14320 GOSUB *TIF_PROC
  434. 14330 MOUSE 1,,,0
  435. 14340 TIF_ENDFLAG=0:SCREEN@ 0:CLS:LOAD@ DRV$+"MULTIV.TIF":GOSUB *SHUT1:DT_FLAG=0:F_SHAPE=80:GOSUB *F_マウスカーソル設定:MOUSE 1,,,1:RETURN
  436. 14350 *SND
  437. 14360 COLOR 6:LOCATE 2,3:PRINT "*SND-Player*"
  438. 14370 LOCATE 2,4:PRINT "SND-File= ";FS_PRA$
  439. 14380 DIM SD(100000/4):LOAD@ FS_PRA$,SD
  440. 14390 LOCATE 2,5:PRINT "左-再生 右-戻る"
  441. 14400 '
  442. 14410 '
  443. 14420 IF MOUSE(3,0)<>0 THEN PCMPLAY SD:GOTO 14400
  444. 14430 '
  445. 14440 IF MOUSE(3,1)<>0 THEN CLS 4:CONSOLE 0,25:COLOR 1:PLAY OFF:ERASE SD:RETURN
  446. 14450 GOSUB *DATE_TIME:GOTO 14410
  447. 14460 *MUS:BGM 1
  448. 14470 LOCATE 2,3:COLOR 6:PRINT "*MUS-Player*"
  449. 14480 LOCATE 2,4:PRINT "MUS-File= ";FS_PRA$
  450. 14490   OPEN "I",#1,FS_PRA$
  451. 14500    LINE INPUT #1,FMB$ : LOAD@ "..\TONE\KNIGHT.FMB"
  452. 14510    LINE INPUT #1,PMB$ : LOAD@ "..\TONE"+PMB$
  453. 14520    FOR P=0 TO 13 : INPUT #1,CH : PART P,CH : NEXT
  454. 14530    INPUT #1,BAR
  455. 14540    INPUT #1,LOOP_P
  456. 14550    DIM SD$(13,BAR)
  457. 14560    FOR R=0 TO BAR
  458. 14570      LINE INPUT #1,DUMMY$
  459. 14580      FOR O=0 TO 13 
  460. 14590        LINE INPUT #1,SD$(O,R)
  461. 14600      NEXT
  462. 14610    NEXT
  463. 14620   CLOSE #1
  464. 14630 LOCATE 2,5:PRINT "終われば戻る(^_^;)"
  465. 14640   N=0
  466. 14650 *PLAY
  467. 14660   FOR R=N TO BAR
  468. 14670     PLAY SD$(0,R),SD$(1,R),SD$(2,R),SD$(3,R),SD$(4,R),SD$(5,R),SD$(6,R),SD$(7,R),SD$(8,R),SD$(9,R),SD$(10,R),SD$(11,R),SD$(12,R),SD$(13,R)
  469. 14680   NEXT
  470. 14690 WHILE PLAY(0)=0
  471. 14700 *MUS_END
  472. 14710 WEND
  473. 14720   BGM 0
  474. 14730 CLS 4:COLOR 1:CONSOLE 0,25:ERASE SD$:RETURN
  475. 14740 *FMB:CONSOLE 13,12
  476. 14750 COLOR 6:GOSUB *OPEN
  477. 14760 FP=1:GOSUB *TONEFM
  478. 14770 'ダミーその1
  479. 14780 LOAD@ FS_PRA$
  480. 14790 LOCATE 0,13:COLOR 1
  481. 14800 INPUT "Tone No.=>",TN$:IF TN$="0" OR TN$="" THEN PRINT "指定が違っています.":GOTO 14800
  482. 14810 IF TN$="END" OR TN$="end" THEN CLS 4:GOSUB *SHUT1:TF_FLAG=0:OUTM #255,&H90,60,0:CONSOLE 0,25:RETURN
  483. 14820 IF TN$="NEXT" OR TN$="next" THEN FP=FP+1:GOSUB *TONEFM:GOTO 14800
  484. 14830 IF TN$="PREV" OR TN$="prev" THEN FP=FP-1:GOSUB *TONEFM:GOTO 14800
  485. 14840 OUTM #255,&HC0,VAL(TN$)-1:OUTM #255,&H90,60,100:IF EUP_R$<>"" THEN GOSUB *EP_REPEAT
  486. 14850 GOTO 14800
  487. 14860 *PMB:CONSOLE 13,12
  488. 14870 COLOR 6:GOSUB *OPEN
  489. 14880 GOSUB *TONEPCM
  490. 14890 'ダミーだぜ! 
  491. 14900 LOAD@ FS_PRA$
  492. 14910 LOCATE 0,13:COLOR 1
  493. 14920 INPUT "Tone No.=>",TN$:IF TN$="0" OR TN$="" THEN PRINT "指定が違っています.":GOTO 14800
  494. 14930 IF TN$="END" OR TN$="end" THEN CLS 4:GOSUB *SHUT1:PF_FLAG=0:OUTM #255,&H9A,60,0:CONSOLE 0,25:RETURN 
  495. 14940 OUTM #255,&HCA,VAL(TN$)-1:OUTM #255,&H9A,60,100:IF EUP_R$<>"" THEN GOSUB *EP_REPEAT
  496. 14950 GOTO 14920
  497. 14960 *ER
  498. 14970 E=1:RESUME NEXT
  499. 14980 *MOUSE_WAIT
  500. 14990 WHILE MOUSE(6,1)=0
  501. 15000 WEND
  502. 15010 CLS 4:GOSUB *SHUT1:RETURN
  503. 15020 *SHUT1:CLOSE
  504. 15030 FOR I=0 TO 10
  505. 15040 PUT@A(0,246+I*20)-(639,266+I*20),ST1%
  506. 15050 WAIT 10:NEXT
  507. 15060 PUT@A(0,466)-(639,479),ST2%
  508. 15070 RETURN
  509. 15080 *OPEN
  510. 15090 LINE(0,466)-(639,479),PSET,%9,BF
  511. 15100 WAIT 10
  512. 15110 FOR I=10 TO 0 STEP -1
  513. 15120 LINE(0,246+I*20)-(639,266+I*20),PSET,%9,BF
  514. 15130 WAIT 10:NEXT
  515. 15140 RETURN
  516. 15150 *END:CLOSE
  517. 15160 IF EN_MOS_FLAG=1 THEN
  518. 15170   LINE(610,0)-(629,19),PSET,%8,B
  519. 15180   LINE(611,1)-(628,18),PSET,%8,B
  520. 15190 ENDIF
  521. 15200 MOUSE 5
  522. 15210 FOR I=0 TO 478 STEP 2
  523. 15220 LINE(0,I)-(639,I),PSET,%0:LINE(0,479-I)-(639,479-I),PSET,%0:WAIT 1
  524. 15230 NEXT:CLS 0:SHELL LEFT$(DRV$,2):END
  525. 15240 *DATE_TIME
  526. 15250 GOSUB *DT_PROCESS
  527. 15260 RETURN
  528. 15270 *MOV
  529. 15280 IF CH=12 THEN SCREEN@ 1 ELSE SCREEN@ 2
  530. 15290 MOVIE OPEN FS_PRA$
  531. 15300 MOVIE INFO 1,MV1&
  532. 15310 MOVIE INFO 2,MV2$
  533. 15320 LOCATE 0,0:COLOR 6 
  534. 15330 PRINT  "Title         >",MV2$(1) 
  535. 15340 PRINT  "Frame/Sec.    >",MV1&(1) 
  536. 15350 PRINT  "PlayTime(Sec.)>",MV1&(3) 
  537. 15360 PRINT  "Tracks        >",MV1&(4) 
  538. 15370 PRINT  "X Size(max)   >",MV1&(6) 
  539. 15380 PRINT  "Y Size(max)   >",MV1&(7) 
  540. 15390 PRINT  "左-再生 右-戻る"
  541. 15400 '
  542. 15410 '
  543. 15420 IF MOUSE(3,0)<>0 THEN 15460
  544. 15430 '
  545. 15440 IF MOUSE(3,1)<>0 THEN MOVIE CLOSE:SCREEN@ 0:LOAD@ DRV$+"MULTIV.TIF":GOSUB *SHUT1:DT_FLAG=0:RETURN
  546. 15450 GOTO 15400
  547. 15460 CLS 4:MOVIE PLAY
  548. 15470 CLS 5:GOTO 15320
  549. 15480 *V02:'----------------------------------------------
  550. 15490 '
  551. 15500 '    V02Play  
  552. 15510 '
  553. 15520 '---------------------------------------------------
  554. 15530  SCREEN@ 0
  555. 15540  SCREEN  0
  556. 15550  CLS:MOUSE 1,,,0
  557. 15560  'ワーク960KB確保
  558. 15570  IF INP(&H30)<6 THEN WD = 3 ELSE WD = 0
  559. 15580  PRINT:PRINT 
  560. 15590 '---------------------------------------------------
  561. 15600  SCREEN 1,1 : SCREEN@ 1 : SCREEN 1,0 ' こうやって書いておけば…
  562. 15610  SYMBOL(184,60),"* V02再生(ディスク再生)*",1,1,7
  563. 15620  SYMBOL(500,466),"By Twinkle Soft,OA-X",.8!,.8!,7
  564. 15630 '---------------------------------------------------
  565. 15640  SYMBOL(10,90),"ファイル名『"+FS_PRA$+"』",1,1,7
  566. 15650  FS_PR$=CHR$(WD+3)+FS_PRA$+CHR$(0)
  567. 15660  CALLM 0,VARPTR(FS_PR$),VARPTR(WORK(0)),960000
  568. 15670 '---------------------------------------------------
  569. 15680  LINE(0,90)-(639,106),PSET,0,BF
  570. 15690 '---------------------------------------------------
  571. 15700  FOR I = 127 TO 0 STEP -1
  572. 15710    FOR J = 0 TO 13
  573. 15720      OUTM #255 , &HB0 + J , 7 , I
  574. 15730  NEXT J , I
  575. 15740  SCREEN 1,1 : CLS  ' ページ1 初期化
  576. 15750  SCREEN@ 0:SCREEN 0:LOAD@ DRV$+"MULTIV.TIF":GOSUB *SHUT1:DT_FLAG=0:RETURN
  577. 15760 *TONEFM:IF TF_FLAG=1 THEN 15830 ELSE TF_FLAG=1
  578. 15770 OPEN "I",#3,FS_PRA$:DIM FT$(127)
  579. 15780 FOR I=1 TO 128
  580. 15790   A$=INPUT$(8,#3)
  581. 15800   A$=INPUT$(8,#3)
  582. 15810   FT$(I-1)=A$:A$=INPUT$(32,#3)
  583. 15820 NEXT I:CLOSE #3:COLOR 6:LOCATE 1,2:PRINT "Filename";:LOCATE 6,3:PRINT LEFT$(FS_PRA$,LEN(FS_PRA$)-4)
  584. 15830 COLOR 5:YLIN=CSRLIN:ON FP GOTO *FPAGE1,*FPAGE2,*FPAGE3
  585. 15840 *FPAGE1:INC=-1:FOR I1=1 TO 5
  586. 15850   FOR I2=0 TO 9:INC=INC+1
  587. 15860     LOCATE I1*13+1,I2+2
  588. 15870     PRINT USING "###:&      &        ";INC+1;FT$(INC);
  589. 15880   NEXT I2
  590. 15890 NEXT I1:COLOR 4
  591. 15900 LOCATE 2,5:PRINT "Page 1";:COLOR 5:LOCATE 0,YLIN:COLOR 1:RETURN
  592. 15910 *FPAGE2:INC=49:FOR I1=1 TO 5
  593. 15920   FOR I2=0 TO 9:INC=INC+1
  594. 15930     LOCATE I1*13+1,I2+2
  595. 15940     PRINT USING "###:&      &        ";INC+1;FT$(INC);
  596. 15950   NEXT I2
  597. 15960 NEXT I1:COLOR 4
  598. 15970 LOCATE 2,5:PRINT "Page 2";:COLOR 5:LOCATE 0,YLIN:COLOR 1:RETURN
  599. 15980 *FPAGE3:INC=99:FOR I1=1 TO 5
  600. 15990   FOR I2=0 TO 9:INC=INC+1:IF INC>=128 THEN FL=1 ELSE FL=0
  601. 16000     LOCATE I1*13+1,I2+2
  602. 16010     IF FL=0 THEN PRINT USING "###:&      &        ";INC+1;FT$(INC); ELSE PRINT SPC(12);
  603. 16020   NEXT I2
  604. 16030 NEXT I1:COLOR 4
  605. 16040 LOCATE 2,5:PRINT "Page 3";:COLOR 5:LOCATE 0,YLIN:COLOR 1:RETURN
  606. 16050 *TONEPCM:IF PF_FLAG=1 THEN 16120 ELSE PF_FLAG=1
  607. 16060 OPEN "I",#3,FS_PRA$:DIM PT$(31)
  608. 16070 FOR I=1 TO 32
  609. 16080   A$=INPUT$(8,#3)
  610. 16090   A$=INPUT$(8,#3)
  611. 16100   PT$(I-1)=A$:A$=INPUT$(112,#3)
  612. 16110 NEXT I:CLOSE #3:COLOR 6:LOCATE 1,2:PRINT "Filename";:LOCATE 6,3:PRINT LEFT$(FS_PRA$,LEN(FS_PRA$)-4)
  613. 16120 COLOR 5:YLIN=CSRLIN
  614. 16130 INC=-1:FOR I1=1 TO 4
  615. 16140   FOR I2=0 TO 9:INC=INC+1:IF INC>=32 THEN FL=1 ELSE FL=0
  616. 16150     LOCATE I1*13+1,I2+2
  617. 16160     IF FL=0 THEN PRINT USING " ##:&      &        ";INC+1;PT$(INC); ELSE PRINT SPC(12);
  618. 16170   NEXT I2
  619. 16180 NEXT I1
  620. 16190 LOCATE 0,YLIN:COLOR 1:ERASE PT$:RETURN
  621. 16200 *EXP
  622. 16210 LOCATE 2,2:COLOR 6:PRINT FS_PRA$;:LOCATE 3,3:PRINT "実行します";:LOCATE 4,4:PRINT "Hit Any Key!(ヤメル-N)";
  623. 16220 DUM$=INPUT$(1):IF DUM$="N" OR DUM$="n" THEN CLS 4:RETURN ELSE RUN FS_PRA$
  624. 16230 *FS_BRANK_CUT          ' FS_W$ 内の先頭と最後にある空白を取り除きます
  625. 16240  WHILE LEFT$(FS_PRA$,1)=" ":FS_PRA$=RIGHT$(FS_PRA$,LEN(FS_PRA$)-1):WEND
  626. 16250  WHILE RIGHT$(FS_PRA$,1)=" ":FS_PRA$=LEFT$(FS_PRA$,LEN(FS_PRA$)-1):WEND
  627. 16260  RETURN
  628. 16270 *DRV_CHECK
  629. 16280 IF F_ICN(F_DRV(F_DRV(0)))=69 THEN F_DRV_ICN=0
  630. 16290 IF F_ICN(F_DRV(F_DRV(0)))=70 THEN F_DRV_ICN=1
  631. 16300 IF F_ICN(F_DRV(F_DRV(0)))=71 THEN F_DRV_ICN=2
  632. 16310 IF F_ICN(F_DRV(F_DRV(0)))=72 THEN F_DRV_ICN=3
  633. 16320 IF F_ICN(F_DRV(F_DRV(0)))=76 THEN F_DRV_ICN=4
  634. 16330 IF F_ICN(F_DRV(F_DRV(0)))=77 THEN F_DRV_ICN=5
  635. 16340 IF F_ICN(F_DRV(F_DRV(0)))=78 THEN F_DRV_ICN=6
  636. 16350 IF F_ICN(F_DRV(F_DRV(0)))=79 THEN F_DRV_ICN=5
  637. 16360 RETURN
  638. 16370 *GET_CDIR
  639. 16380  FILES "*.*",C,CDIR&
  640. 16390  DIM CDIR$(CDIR&(1)+1)
  641. 16400  FILES "*.*",N,CDIR$
  642. 16410  DRV$=CDIR$(0):IF RIGHT$(DRV$,1)<>"\" THEN DRV$=DRV$+"\"
  643. 16420  ERASE CDIR&,CDIR$
  644. 16430 RETURN
  645. 16440 *DT_PROCESS
  646. 16450 DT_DATE$=DATE$:DT_TIME$=TIME$
  647. 16460 DT_YEAR1$=LEFT$(DT_DATE$,1)
  648. 16470 DT_YEAR2$=MID$(DT_DATE$,2,1)
  649. 16480 DT_MONTH1$=MID$(DT_DATE$,4,1)
  650. 16490 DT_MONTH2$=MID$(DT_DATE$,5,1)
  651. 16500 DT_DAY1$=MID$(DT_DATE$,7,1)
  652. 16510 DT_DAY2$=RIGHT$(DT_DATE$,1)
  653. 16520 DT_HOUR1$=LEFT$(DT_TIME$,1)
  654. 16530 DT_HOUR2$=MID$(DT_TIME$,2,1)
  655. 16540 DT_MINUTE1$=MID$(DT_TIME$,4,1)
  656. 16550 DT_MINUTE2$=MID$(DT_TIME$,5,1)
  657. 16560 'DT_SECOND=VAL(RIGHT$(DT_TIME$,1))
  658. 16570 DT_DD$=DT_YEAR1$+DT_YEAR2$+"."+DT_MONTH1$+DT_MONTH2$+"."+DT_DAY1$+DT_DAY2$
  659. 16580 IF DT_FLAG=0 THEN DT_FLAG=1:SYMBOL(420,4),DT_DD$,.75!,.75!,%15:SYMBOL(498,4),LEFT$(DT_TIME$,5),.75!,.75!,%15:GOSUB *DT_WEEK:GOSUB *DT_YEAR:GOTO 16710
  660. 16590 IF DT_HI_YEAR1$="" THEN GOSUB *DT_HIS_SET
  661. 16600 IF DT_HI_YEAR1$<>DT_YEAR1$ THEN DT_HI_YEAR1$=DT_YEAR1$:LINE(420,4)-(425,15),PSET,%7,BF:SYMBOL(420,4),DT_YEAR1$,.75!,.75!,%15
  662. 16610 IF DT_HI_YEAR2$<>DT_YEAR2$ THEN DT_HI_YEAR2$=DT_YEAR2$:LINE(426,4)-(431,15),PSET,%7,BF:SYMBOL(426,4),DT_YEAR2$,.75!,.75!,%15
  663. 16620 IF DT_HI_MONTH1$<>DT_MONTH1$ THEN DT_HI_MONTH1$=DT_MONTH1$:LINE(438,4)-(443,15),PSET,%7,BF:SYMBOL(438,4),DT_MONTH1$,.75!,.75!,%15
  664. 16630 IF DT_HI_MONTH2$<>DT_MONTH2$ THEN DT_HI_MONTH2$=DT_MONTH2$:LINE(444,4)-(449,15),PSET,%7,BF:SYMBOL(444,4),DT_MONTH2$,.75!,.75!,%15
  665. 16640 IF DT_HI_DAY1$<>DT_DAY1$ THEN DT_HI_DAY1$=DT_DAY1$:LINE(456,4)-(461,15),PSET,%7,BF:SYMBOL(456,4),DT_DAY1$,.75!,.75!,%15
  666. 16650 IF DT_HI_DAY2$<>DT_DAY2$ THEN DT_HI_DAY2$=DT_DAY2$:LINE(462,4)-(467,15),PSET,%7,BF:SYMBOL(462,4),DT_DAY2$,.75!,.75!,%15:GOSUB *DT_WEEK
  667. 16660 IF DT_HI_HOUR1$<>DT_HOUR1$ THEN DT_HI_HOUR1$=DT_HOUR1$:LINE(498,4)-(503,15),PSET,%7,BF:SYMBOL(498,4),DT_HOUR1$,.75!,.75!,%15
  668. 16670 IF DT_HI_HOUR2$<>DT_HOUR2$ THEN DT_HI_HOUR2$=DT_HOUR2$:LINE(504,4)-(509,15),PSET,%7,BF:SYMBOL(504,4),DT_HOUR2$,.75!,.75!,%15
  669. 16680 'IF DT_HI_SECOND<>DT_SECOND THEN GOSUB *DT_SEC
  670. 16690 IF DT_HI_MINUTE1$<>DT_MINUTE1$ THEN DT_HI_MINUTE1$=DT_MINUTE1$:LINE(516,4)-(521,15),PSET,%7,BF:SYMBOL(516,4),DT_MINUTE1$,.75!,.75!,%15
  671. 16700 IF DT_HI_MINUTE2$<>DT_MINUTE2$ THEN DT_HI_MINUTE2$=DT_MINUTE2$:LINE(522,4)-(527,15),PSET,%7,BF:SYMBOL(522,4),DT_MINUTE2$,.75!,.75!,%15
  672. 16710 RETURN
  673. 16720 *DT_WEEK
  674. 16730 WE_YEAR=VAL(LEFT$(DT_DATE$,2)):IF WE_YEAR<95 THEN WE_YEAR=WE_YEAR+100
  675. 16740 WE_Y=WE_YEAR:FOR I=95 TO WE_YEAR
  676. 16750   IF WE_YEAR MOD 4=0 THEN WE_Y=WE_Y-1:WE_UY=WE_UY+1
  677. 16760 NEXT:WE_Y=WE_Y-95
  678. 16770 WE_DAY=(365*WE_Y)+(366*WE_UY)+DATE
  679. 16780 WE_DD=WE_DAY MOD 7
  680. 16790 IF WE_DD=1 THEN WE_DD$="日"
  681. 16800 IF WE_DD=2 THEN WE_DD$="月"
  682. 16810 IF WE_DD=3 THEN WE_DD$="火"
  683. 16820 IF WE_DD=4 THEN WE_DD$="水"
  684. 16830 IF WE_DD=5 THEN WE_DD$="木"
  685. 16840 IF WE_DD=6 THEN WE_DD$="金"
  686. 16850 IF WE_DD=0 THEN WE_DD$="土"
  687. 16860 LINE(468,4)-(497,13),PSET,%7,BF:SYMBOL(468,4),"("+WE_DD$+")",.75!,.75!,%15
  688. 16870 RETURN
  689. 16880 '*DT_SEC
  690. 16890 'IF DT_SECOND MOD 2=0 THEN SYMBOL(516,4),":",.75!,.75!,%15:GOTO 33440
  691. 16900 'LINE(516,4)-(521,13),PSET,%7,BF
  692. 16910 'RETURN
  693. 16920 *DT_HIS_SET
  694. 16930 DT_HI_YEAR1$=DT_YEAR1$:DT_HI_YEAR2$=DT_YEAR2$
  695. 16940 DT_HI_MONTH1$=DT_MONTH1$:DT_HI_MONTH2$=DT_MONTH2$
  696. 16950 DT_HI_DAY1$=DT_DAY1$:DT_HI_DAY2$=DT_DAY2$
  697. 16960 DT_HI_HOUR1$=DT_HOUR1$:DT_HI_HOUR2$=DT_HOUR2$
  698. 16970 DT_HI_MINUTE1$=DT_MINUTE1$:DT_HI_MINUTE2$=DT_MINUTE2$
  699. 16980 'DT_HI_SECOND=DT_SECOND
  700. 16990 RETURN
  701. 17000 *DT_YEAR
  702. 17010 IF VAL(LEFT$(DT_DATE$,2))<95 THEN SYMBOL(408,4),"20",.75!,.75!,%15 ELSE SYMBOL(408,4),"19",.75!,.75!,%15
  703. 17020 RETURN
  704. 17030 *MV_SDKMENU
  705. 17040 GOTO *SDK_MAIN
  706. 17050 '★★★★ 終了 ★★★★
  707. 17060 '
  708. 17070 *NOSIDEWORK_EXIST
  709. 17080 PRINT "サイドワーク機能がインストールされていません"
  710. 17090 '
  711. 17100 '★★★★ 初期化サブ ★★★★
  712. 17110 '
  713. 17120 *SDKINIT
  714. 17130 SDKADDR& = 52048                    'プロシージャー読み込みアドレス
  715. 17140 LOADM "sdkrun.rex", SDKADDR&
  716. 17150 SDKRUN& = SDKADDR&
  717. 17160 SDKNUM& = SDKADDR& + &H30
  718. 17170 SDKGETNAME& = SDKADDR& + &H10
  719. 17180 SDKMAX& = CALLM(SDKNUM&)     '-1 ...サイドワークオフ
  720. 17190                              '0  ...メニューのみ
  721. 17200 IF SDKMAX& => 0 THEN
  722. 17210 FOR I&=0 TO SDKMAX&
  723. 17220   SDKKEY$ = SDKKEY$ + CHR$(CALLM(SDKGETNAME&, I&, VARPTR(SDKNAME$(I&))))
  724. 17230  NEXT I&
  725. 17240 ENDIF
  726. 17250 RETURN
  727. 17260 '
  728. 17270 '★★★★ メニューメイン ★★★★ 
  729. 17280 '
  730. 17290 *SDK_MAIN
  731. 17300 GOTO *B1
  732. 17310 'RESULT& = CALLM(SDKRUN&, SEL&)
  733. 17320 RETURN
  734. 17330 '
  735. 17340 '★★★★ メニューサブ ★★★★ 
  736. 17350 *B1
  737. 17360 GET@A (0,20)-(6*24-1,479),WORK&
  738. 17370 LINE (2,22)-(6*22+3,20+(3+SDKMAX&-(SDKMAX&>0))*15+3),PSET,%8,BF
  739. 17380 LINE (0,20)-(6*22+1,20+(3+SDKMAX&-(SDKMAX&>0))*15+1),PSET,%8,BF,%15
  740. 17390 SYMBOL (12,22),"About MultiV",.75!,.75!,%8
  741. 17400 LINE (6,22+15+6)-(6*21,22+15+6),PSET,%8
  742. 17410 IF SDKMAX&>0 THEN
  743. 17420  FOR J=1 TO SDKMAX&
  744. 17430   SYMBOL (12,22+15*(J+1)),SDKNAME$(J),.75!,.75!,%8
  745. 17440  NEXT J
  746. 17450 ENDIF
  747. 17460 LINE (6,22+(1+SDKMAX&-(SDKMAX&>0))*15+6)-(6*21,22+(1+SDKMAX&-(SDKMAX&>0))*15+6),PSET,%8
  748. 17470 SYMBOL (12,22+(2+SDKMAX&-(SDKMAX&>0))*15),"終了",.75!,.75!,%8
  749. 17480 Y=-1:SY=-1
  750. 17490 *B1LOOP
  751. 17500 MX=MOUSE(0):MY=MOUSE(1)
  752. 17510 IF MY<20 AND 107<=MX AND MX<229 THEN *B1TO2
  753. 17520 Y=(MY-22)\15
  754. 17530 IF MY<22 OR MX<1 OR MX>131 OR MY>66+(SDKMAX&-(SDKMAX&>0))*15 THEN Y=-1
  755. 17540 IF Y=1 OR Y=1+SDKMAX&-(SDKMAX&>0) OR Y>2+SDKMAX&-(SDKMAX&>0) THEN Y=-1
  756. 17550 IF Y<>SY THEN
  757. 17560  IF SY>-1 THEN LINE (1,21+15*SY)-(6*22,21+15*SY+14),XOR,%7,BF
  758. 17570  IF Y>-1 THEN LINE (1,21+15*Y)-(6*22,21+15*Y+14),XOR,%7,BF
  759. 17580  SY=Y
  760. 17590 ENDIF
  761. 17600 IF MOUSE(2,0)=-1 GOTO *B1LOOP
  762. 17610 IF MY<20 AND 0<=MX AND MX<6*16 THEN *B1_2
  763. 17620 IF Y=0 THEN *MV_ABOUT
  764. 17630 IF Y=2+SDKMAX&-(SDKMAX&>0) THEN *B1_END
  765. 17640 IF Y<>-1 THEN *B1_1
  766. 17650 LINE(0,0)-(1,18),PSET,%15,B:LINE(0,0)-(104,1),PSET,%15,B
  767. 17660 PSET(0,19),%15:PSET(105,0),%15
  768. 17670 PUT@A (0,20)-(6*24-1,479),WORK&,PSET
  769. 17680 RETURN
  770. 17690 '
  771. 17700 *B1TO2
  772. 17710 LINE(0,0)-(106,1),PSET,%15,B:LINE(0,2)-(1,19),PSET,%15,B:PSET(1,19),%8
  773. 17720 LINE(2,18)-(106,19),PSET,%8,B:LINE(105,2)-(106,17),PSET,%8,B:PSET(106,1),%8
  774. 17730 PUT@A (0,20)-(6*24-1,479),WORK&,PSET
  775. 17740 GOTO *FILE_CLICK
  776. 17750 '
  777. 17760 *B1_END
  778. 17770 LINE(0,0)-(1,18),PSET,%15,B:LINE(0,0)-(104,1),PSET,%15,B
  779. 17780 PSET(0,19),%15:PSET(105,0),%15
  780. 17790 PUT@A (0,20)-(6*24-1,479),WORK&,PSET
  781. 17800 GOTO *END
  782. 17810 '
  783. 17820 *B1_1
  784. 17830 LINE(0,0)-(1,18),PSET,%15,B:LINE(0,0)-(104,1),PSET,%15,B
  785. 17840 PSET(0,19),%15:PSET(105,0),%15
  786. 17850 PUT@A (0,20)-(6*24-1,479),WORK&,PSET
  787. 17860 PARA& = Y-1
  788. 17870 RESULT& = CALLM(SDKRUN&, PARA&)
  789. 17880 RETURN
  790. 17890 '
  791. 17900 *B1_2
  792. 17910 WHILE MOUSE(2,0)=0:WEND
  793. 17920 GOTO *B1LOOP
  794. 17930 '
  795. 17940 *ASAVE
  796. 17950 SAX=AX:SAY=AY
  797. 17960 GET@A (SAX-1,SAY-1)-(SAX+300,SAY+120),WORK&
  798. 17970 RETURN
  799. 17980 '
  800. 17990 *ALOAD
  801. 18000 PUT@A (SAX-1,SAY-1)-(SAX+300,SAY+120),WORK&,PSET
  802. 18010 RETURN
  803. 18020 '
  804. 18030 *PUT_DRIVENAME
  805. 18040 PUT@A(166,157)-(170,163),DNAME,,,,,7*(F_DRV(0)-1)
  806. 18050 RETURN
  807. 18060 *SUFFIX_CUT
  808. 18070 IF INSTR(F_NAME$(F_I),".")=0 THEN
  809. 18080   F_NAME2$(F_I)=LEFT$(F_NAME2$(F_I)+SPACE$(13),12)
  810. 18090 ELSE
  811. 18100   IF INSTR(F_NAME2$(F_I),".")<>0 THEN
  812. 18110     F_NAME2$(F_I)=LEFT$(F_NAME2$(F_I),8)+" "+LEFT$(RIGHT$(F_NAME2$(F_I),12-INSTR(10,F_NAME2$(F_I),"."))+"   ",3)
  813. 18120   ENDIF
  814. 18130 ENDIF
  815. 18140 RETURN
  816. 18150 *DIR_CUT
  817. 18160 FS_CDIR$=LEFT$(MID$(F_STR$,F_I,F_J-F_I)+SPACE$(13),12)
  818. 18170 IF LEFT$(FS_CDIR$,1)="\" THEN FS_CDIR$=RIGHT$(FS_CDIR$+" ",12):DCUT_FLAG=1
  819. 18180 IF DCUT_FLAG=1 THEN DCUT_FLAG=0:GOTO 18170
  820. 18190 RETURN
  821. 18200 *PUT_FIL
  822. 18210  WHILE F_I<=9 AND F_I+F_TOP<F_NUM
  823. 18220   FY=FY+14
  824. 18230   IF F_ATTR&(F_I+F_TOP)=&H10 THEN
  825. 18240    SYMBOL(FX,FY),"<"+LEFT$(F_NAME$(F_I+F_TOP)+SPACE$(20),12)+">",.75!,.75!,%8
  826. 18250    SYMBOL(FX+143,FY),F_DATE$(F_I+F_TOP),.75!,.75!,%8
  827. 18260   ELSE
  828. 18270    SYMBOL(FX,FY)," "+F_NAME2$(F_I+F_TOP),.75!,.75!,%8
  829. 18280    SYMBOL(FX+90,FY)," "+RIGHT$(SPACE$(14)+STR$(F_SIZE&(F_I+F_TOP)),8),.75!,.75!,%8
  830. 18290    SYMBOL(FX+143,FY),F_DATE$(F_I+F_TOP),.75!,.75!,%8
  831. 18300  ENDIF
  832. 18310  F_I=F_I+1
  833. 18320  WEND
  834. 18330 RETURN
  835. 18340 *SCROLL_BTN
  836. 18350 'LINE(F_X1,F_Y1)-(F_X2,F_Y2),PSET,%15,B:LINE(F_X1+1,F_Y1+1)-(F_X2-1,F_Y2-1),PSET,%15,B
  837. 18360 'LINE(F_X1+1,F_Y2-1)-(F_X2-2,F_Y2),PSET,%8,BF
  838. 18370 'LINE(F_X2-1,F_Y1+1)-(F_X2,F_Y2),PSET,%8,BF
  839. 18380 'PSET(F_X1,F_Y2),%8:PSET(F_X2,F_Y1),%8
  840. 18390 RETURN
  841. 18400 *EP_MEASGET
  842. 18410  PLAY@ EP,0
  843. 18420  OUTM &HF0,&H4B,&H10,&H42,&H12,&H40,&H00,&H04,&H00,&HF3,&HF7
  844. 18430 *EP_REPEAT
  845. 18440  IF INKEY$=CHR$(13) THEN
  846. 18450    IF EUP_REPFLAG=0 THEN EUP_REPFLAG=1 ELSE EUP_REPFLAG=0
  847. 18460  ENDIF
  848. 18470  IF EUP_REPFLAG=1 AND PLAY(0)=0 THEN PLAY@ EP,0
  849. 18480  COLOR 6:IF EUP_REPFLAG=0 AND EUP_MODE=1 THEN LOCATE 16,6:PRINT "OFF";
  850. 18490  IF EUP_REPFLAG=1 AND EUP_MODE=1 THEN LOCATE 16,6:PRINT " ON";
  851. 18500 COLOR 1:RETURN
  852. 18510 *MULTIV_INIT
  853. 18520 SCREEN@ 0
  854. 18530 SCREEN 0
  855. 18540 CLS 0
  856. 18550 STOP OFF
  857. 18560 VIEW(0,0)-(639,479):WINDOW(0,0)-(639,479)
  858. 18570 RETURN
  859. 18580 *MOS_SPEEDSET
  860. 18590  MOUSE 3,0,INP(&H3B06,1):MOUSE 3,1,INP(&H3B06,1)
  861. 18600 RETURN
  862. 18610 *TIF_PROC:CLS:MOUSE 1,,,0:ON ERROR GOTO *TIFF_ERR
  863. 18620  DEF FNGETC=ASC(INPUT$(1,1))
  864. 18630  DEF FNGETSHORT=FNGETC+FNGETC*256
  865. 18640  DEF FNGETLONG=FNGETSHORT+FNGETSHORT*65536
  866. 18650  OPEN "I",#1,FS_PRA$
  867. 18660  A$=INPUT$(4,1)
  868. 18670  IF A$<>"II"+CHR$(&H2A)+CHR$(0) THEN
  869. 18680   SCREEN@ 0:GUI_SX=160:GUI_SY=120:GUI_EX=479:GUI_EY=239:GUI_COL=6:GUI_BTTYPE=2:GOSUB *GUI_BTNPUT
  870. 18690   GUI_SX=162:GUI_SY=218:GUI_EX=477:GUI_EY=237:GUI_COL=6:GUI_BTTYPE=1:GOSUB *GUI_BTNPUT
  871. 18700   SYMBOL(170,160),"これはTIFFファイルではありません。",.75!,.75!,%10
  872. 18710   SYMBOL(446,221),"確 認",.75!,.75!,%8:MOUSE 1,,,1
  873. 18720   WHILE MOX<162 OR MOX>477 OR MOY<218 OR MOY>237 AND MOUSE(2,0)=0
  874. 18730    MOX=MOUSE(0):MOY=MOUSE(1)
  875. 18740   WEND
  876. 18750   LINE(162,218)-(477,237),XOR,%7,BF
  877. 18760   WHILE MBT=0
  878. 18770    MBT=MOUSE(6,0)
  879. 18780   WEND
  880. 18790   LINE(162,218)-(477,237),XOR,%7,BF
  881. 18800   CLS:RETURN
  882. 18810  ENDIF
  883. 18820  FIFDPOS=FNGETLONG
  884. 18830  IF FIFDPOS>8 THEN A$=INPUT$(FIFDPOS-8,1)
  885. 18840  FTAGNUM=FNGETSHORT
  886. 18850  FOR FI=0 TO FTAGNUM-1
  887. 18860   FTAGID=FNGETSHORT
  888. 18870   FTAGTYPE=FNGETSHORT
  889. 18880   FTAGDATNUM=FNGETLONG
  890. 18890   FTAGDAT=FNGETSHORT
  891. 18900   FA=FNGETSHORT
  892. 18910   IF FTAGID=&H100 THEN FXSIZE=FTAGDAT
  893. 18920   IF FTAGID=&H101 THEN FYSIZE=FTAGDAT
  894. 18930   IF FTAGID=&H102 THEN
  895. 18940    IF FTAGTYPE=3 AND FTAGDATNUM=1 THEN
  896. 18950     IF FTAGDAT=1 THEN FCOLTYPE=2
  897. 18960     IF FTAGDAT=4 THEN FCOLTYPE=16
  898. 18970     IF FTAGDAT=8 THEN FCOLTYPE=256
  899. 18980     IF FTAGDAT=16 THEN FCOLTYPE=32768
  900. 18990    ELSE
  901. 19000     IF FTAGTYPE=3 AND FTAGDATNUM=3 THEN FCOLTYPE=16777216
  902. 19010    ENDIF
  903. 19020   ENDIF
  904. 19030  NEXT
  905. 19040  IF FCOLTYPE=2 OR FCOLTYPE=16 THEN
  906. 19050   SCREEN@ 0:CLS
  907. 19060   IF FXSIZE>640 OR FYSIZE>480 THEN SCREEN 3,0,3,0
  908. 19070  ENDIF 
  909. 19080  IF FCOLTYPE=256 THEN
  910. 19090   SCREEN@ 2:CLS
  911. 19100   IF FXSIZE>640 OR FYSIZE>480 THEN SCREEN 2
  912. 19110  ENDIF
  913. 19120  IF FCOLTYPE=32768 THEN
  914. 19130   IF FXSIZE>320 OR FYSIZE>240 THEN SCREEN@ 1,2,(64,0)
  915. 19140   IF FXSIZE<=320 AND FYSIZE<=240 THEN SCREEN@ 1:CLS
  916. 19150  ENDIF
  917. 19160  IF FCOLTYPE=16777216 THEN
  918. 19170   SCREEN@ 3
  919. 19180  ENDIF
  920. 19190  LOAD@ FS_PRA$:IF FCOLTYPE=32768 AND FXSIZE<320 AND FYSIZE<240 THEN UD=2 ELSE UD=1
  921. 19200  WHILE MOUSE(6,1)=0 OR MOUSE(6,0)=0
  922. 19201   MX=MOUSE(0):MY=MOUSE(1)
  923. 19202   OUT &H440,&H11,1:OUT &H442,INT(MX\2+MY*256),1
  924. 19203   IF MOUSE(2,0)<>0 THEN UD=UD+1:IF UD>16 THEN UD=16
  925. 19204   IF MOUSE(2,1)<>0 THEN UD=UD-1:IF UD<1  THEN UD=1
  926. 19205   IF MOUSE(2,0)<>0 OR MOUSE(2,1)<>0 THEN WAIT 5:OUT &H440,&H1B,2:OUT &H442,(UD-1)*16+(UD-1),2
  927. 19210  WEND:OUT &H440,&H11,1:OUT &H442,0,1:OUT &H440,%H1B,2:OUT &H442,0,2
  928. 19220  CLS:SCREEN@ 0:SCREEN 0:GOSUB *PAL_INIT
  929. 19230  GUI_SX=160:GUI_SY=120:GUI_EX=479:GUI_EY=359:GUI_COL=6:GUI_BTTYPE=2:GOSUB *GUI_BTNPUT
  930. 19240  GUI_SX=162:GUI_SY=338:GUI_EX=477:GUI_EY=357:GUI_COL=6:GUI_BTTYPE=1:GOSUB *GUI_BTNPUT
  931. 19250  GUI_SX=162:GUI_SY=318:GUI_EX=477:GUI_EY=337:GUI_COL=6:GUI_BTTYPE=1:GOSUB *GUI_BTNPUT
  932. 19260  SYMBOL(170,125),"画像情報",.75!,.75!,%5,,,4
  933. 19270  SYMBOL(170,139),"ファイル名:"+FS_PRA$,.75!,.75!,%8
  934. 19280  SYMBOL(170,153),"色数      :"+RIGHT$(SPACE$(8)+STR$(FCOLTYPE),8)+"色",.75!,.75!,%8
  935. 19290  SYMBOL(170,167),"画像サイズ:"+RIGHT$(SPACE$(4)+STR$(FXSIZE),4)+"*"+RIGHT$(SPACE$(3)+STR$(FYSIZE),3),.75!,.75!,%8
  936. 19300  SYMBOL(446,321),"見 る",.75!,.75!,%8
  937. 19310  SYMBOL(446,341),"戻 る",.75!,.75!,%8:F_SHAPE=80:GOSUB *F_マウスカーソル設定:MOUSE 1,,,1
  938. 19320  WHILE MOUSE(2,0)=0:WEND:MOSSX=MOUSE(0):MOSSY=MOUSE(1)
  939. 19330  IF MOSSX=>162 AND MOSSX<=477 THEN
  940. 19340   IF MOSSY=>318 AND MOSSY<=337 THEN
  941. 19350     LINE(162,318)-(477,337),XOR,%7,BF
  942. 19360     WHILE MOUSE(6,0)=0:WEND
  943. 19370     LINE(162,318)-(477,337),XOR,%7,BF
  944. 19380     CLS:MOUSE 1,,,0:GOTO 19040
  945. 19390   ELSE
  946. 19400    IF MOSSY=>338 AND MOSSY<=357 THEN
  947. 19410     LINE(162,338)-(477,357),XOR,%7,BF
  948. 19420     WHILE MOUSE(6,0)=0:WEND
  949. 19430     LINE(162,338)-(477,357),XOR,%7,BF
  950. 19440     CLS:ON ERROR GOTO *MULTIV_ERR:RETURN
  951. 19450    ENDIF
  952. 19460   ENDIF
  953. 19470  ELSE
  954. 19475   GOTO 19320
  955. 19478  ENDIF
  956. 19480 *PAL_INIT
  957. 19490  PALETTE 1,[119,34,187]:PALETTE 2,[102,204,68]:PALETTE 3,[204,255,170]
  958. 19500  PALETTE 4,[153,153,153]:PALETTE 5,[204,0,119]:PALETTE 6,[204,204,204]
  959. 19510  PALETTE 7,[119,119,119]:PALETTE 8,[34,34,34]:PALETTE 9,[187,136,238]
  960. 19520  PALETTE 10,[0,221,0]:PALETTE 11,[0,0,170]:PALETTE 12,[85,85,85]
  961. 19530  PALETTE 13,[255,0,255]:PALETTE 14,[221,255,0]:PALETTE 15,[255,255,255]
  962. 19540 RETURN
  963. 19550 *GUI_BTNPUT
  964. 19560  IF GUI_BTTYPE=1 THEN
  965. 19570   LINE(GUI_SX,GUI_SY)-(GUI_EX,GUI_EY),PSET,%GUI_COL,BF
  966. 19580   LINE(GUI_SX,GUI_SY)-(GUI_SX,GUI_EY-1),PSET,%15
  967. 19590   LINE(GUI_SX,GUI_SY)-(GUI_EX-1,GUI_SY),PSET,%15
  968. 19600   LINE(GUI_SX,GUI_EY)-(GUI_EX,GUI_EY),PSET,%8
  969. 19610   LINE(GUI_EX,GUI_SY)-(GUI_EX,GUI_EY),PSET,%8
  970. 19620   RETURN
  971. 19630  ELSE
  972. 19640   LINE(GUI_SX,GUI_SY)-(GUI_EX,GUI_EY),PSET,%GUI_COL,BF
  973. 19650   LINE(GUI_SX,GUI_SY)-(GUI_SX+1,GUI_EY-1),PSET,%15,BF
  974. 19660   LINE(GUI_SX+2,GUI_SY)-(GUI_EX-1,GUI_SY+1),PSET,%15,BF
  975. 19670   LINE(GUI_SX+2,GUI_EY-1)-(GUI_EX,GUI_EY),PSET,%8,BF
  976. 19680   LINE(GUI_EX-1,GUI_SY+2)-(GUI_EX,GUI_EY-2),PSET,%8,BF
  977. 19690   PSET(GUI_SX,GUI_EY),%15:PSET(GUI_EX,GUI_SY),%15
  978. 19700   PSET(GUI_SX+1,GUI_EY),%8:PSET(GUI_EX,GUI_SY+1),%8
  979. 19710   RETURN
  980. 19720  ENDIF
  981. 19730 *TIFF_ERR
  982. 19740  IF FCOLTYPE=2 OR FCOLTYPE=16 THEN SCREEN 0:SCREEN@ 1:RESUME NEXT
  983. 19750  IF FCOLTYPE=256 THEN SCREEN 0:SCREEN@ 2:RESUME NEXT
  984. 19760  IF FCOLTYPE=16777216 THEN RESUME NEXT
  985. 19770 *MULTIV_ERR
  986. 19780  IF ERL>10180 THEN GET@A(160,120)-(479,239),SCRN2% ELSE MOUSE 0:MOUSE 1,320,240,1
  987. 19790   GUI_SX=160:GUI_SY=120:GUI_EX=479:GUI_EY=239:GUI_COL=6:GUI_BTTYPE=2:GOSUB *GUI_BTNPUT
  988. 19800   GUI_SX=162:GUI_SY=218:GUI_EX=477:GUI_EY=237:GUI_COL=6:GUI_BTTYPE=1:GOSUB *GUI_BTNPUT
  989. 19810  IF ERR=1 THEN SYMBOL(170,160),"FOR文がないのにNEXT文がありました",.75!,.75!,%10:GOTO 20060
  990. 19820  IF ERR=2 THEN SYMBOL(170,160),"文法が正しくありません",.75!,.75!,%10:GOTO 20060
  991. 19830  IF ERR=3 THEN SYMBOL(170,160),"GOSUB文がないのにRETURN文がありました",.75!,.75!,%10:GOTO 20060
  992. 19840  IF ERR=5 THEN SYMBOL(170,160),"関数または命令文の使い方が正しくありません",.75!,.75!,%10:GOTO 20060
  993. 19850  IF ERR=6 THEN SYMBOL(170,160),"数値データの値が許される範囲を超えています",.75!,.75!,%10:GOTO 20060
  994. 19860  IF ERR=7 THEN SYMBOL(170,160),"メモリが足りません",.75!,.75!,%10:GOTO 20060
  995. 19870  IF ERR=8 THEN SYMBOL(170,160),"指定された行番号が見つかりません",.75!,.75!,%10:GOTO 20060
  996. 19880  IF ERR=9 THEN SYMBOL(170,160),"配列の添字の値が許される値を超えています",.75!,.75!,%10:GOTO 20060
  997. 19890  IF ERR=10 THEN SYMBOL(170,160),"重複定義を行おうとしました",.75!,.75!,%10:GOTO 20060
  998. 19900  IF ERR=13 THEN SYMBOL(170,160),"変数または式の型が合っていません",.75!,.75!,%10:GOTO 20060
  999. 19910  IF ERR=15 THEN SYMBOL(170,160),"文字列の長さが許される範囲を超えています",.75!,.75!,%10:GOTO 20060
  1000. 19920  IF ERR=29 THEN SYMBOL(170,160),"定義されていないラベル名が参照されました",.75!,.75!,%10:GOTO 20060
  1001. 19930  IF ERR=53 THEN SYMBOL(170,160),"入出力装置に異常が発生しました",.75!,.75!,%10:GOTO 20060
  1002. 19940  IF ERR=55 THEN SYMBOL(170,160),"ファイルの記述に誤りがあります",.75!,.75!,%10:GOTO 20060
  1003. 19950  IF ERR=60 THEN SYMBOL(170,160),"指定の入出力装置は使用できません",.75!,.75!,%10:GOTO 20060
  1004. 19960  IF ERR=63 THEN SYMBOL(170,160),"指定のファイルが見つかりません",.75!,.75!,%10:GOTO 20060
  1005. 19970  IF ERR=72 THEN SYMBOL(170,160),"指定された装置が使用可能な状態になっていません",.75!,.75!,%10:GOTO 20060
  1006. 19980  IF ERR=73 THEN SYMBOL(170,160),"ディスクが書き込み禁止です",.75!,.75!,%10:GOTO 20060
  1007. 19990  IF ERR=75 THEN SYMBOL(170,160),"デバイスまたはファイルのアクセスが拒否されました",.75!,.75!,%10:GOTO 20060
  1008. 20000  IF ERR=83 THEN SYMBOL(170,160),"配列変数領域がいっぱいになりました",.75!,.75!,%10:GOTO 20060
  1009. 20010  IF ERR=90 THEN SYMBOL(170,160),"プロシジャ領域の大きさが足りません",.75!,.75!,%10:GOTO 20060
  1010. 20020  IF ERR=91 THEN SYMBOL(170,160),"DLL領域の大きさが足りません",.75!,.75!,%10:GOTO 20060
  1011. 20030  IF ERR=112 THEN SYMBOL(170,160),"現在のモードではこの命令を使えません",.75!,.75!,%10:GOTO 20060
  1012. 20040  IF ERR=124 THEN SYMBOL(170,160),"存在しない行番号が参照されています",.75!,.75!,%10:GOTO 20060
  1013. 20050  SYMBOL(170,160),STR$(ERL)+"行でエラー"+STR$(ERR)+"が発生しました。",.75!,.75!,%10:GOTO 20070
  1014. 20060  SYMBOL(170,180),STR$(ERL)+"行",.75!,.75!,%8
  1015. 20070  SYMBOL(446,221),"確 認",.75!,.75!,%8:MOUSE 1,,,1:WHILE MOUSE(3,0)=0:WEND
  1016. 20080  WHILE MOX<162 OR MOX>477 OR MOY<218 OR MOY>237
  1017. 20090   MOX=MOUSE(0):MOY=MOUSE(1)
  1018. 20100  WEND:DUM=MOUSE(6,0)
  1019. 20110  LINE(162,218)-(477,237),XOR,%7,BF
  1020. 20120  WHILE MBT=0
  1021. 20130   MBT=MOUSE(6,0)
  1022. 20140  WEND
  1023. 20150  LINE(162,218)-(477,237),XOR,%7,BF
  1024. 20160  IF ERL>10180 THEN PUT@A(160,120)-(479,239),SCRN2% ELSE CLS
  1025. 20170  RESUME NEXT
  1026. 20180 *EUP_GETINFORM:ON ERROR GOTO *EUP_ERR
  1027. 20190  TIT$="":FFN$="":PFN$="":F_SHAPE=81:GOSUB *F_マウスカーソル設定
  1028. 20200  OPEN "I",#4,FS_PRA$
  1029. 20210  TIT$=INPUT$(32,#4):TSL=INSTR(TIT$,CHR$(0)):IF TSL=0 THEN TSL=33
  1030. 20220  A$=INPUT$(255,#4):A$=INPUT$(255,#4):A$=INPUT$(255,#4):A$=INPUT$(255,#4):A$=INPUT$(255,#4)
  1031. 20230  A$=INPUT$(255,#4):A$=INPUT$(200,#4):TIT$=LEFT$(TIT$,TSL-1)                        '空読み
  1032. 20240  FFN$=INPUT$(8,#4):PFN$=INPUT$(8,#4):SFS=INSTR(FFN$,CHR$(0)):PCS=INSTR(PFN$,CHR$(0))
  1033. 20250  IF SFS=0 THEN SFS=9
  1034. 20260  IF PCS=0 THEN PCS=9
  1035. 20270  FFN$=LEFT$(FFN$,SFS-1):PFN$=LEFT$(PFN$,PCS-1):CLOSE #4
  1036. 20280  WHILE LEFT$(FFN$,1)=" ":FFN$=RIGHT$(FFN$,LEN(FFN$)-1):WEND
  1037. 20290  WHILE LEFT$(FFN$,1)=CHR$(0):FFN$=RIGHT$(FFN$,LEN(FFN$)-1):WEND
  1038. 20300  WHILE RIGHT$(FFN$,1)=" ":FFN$=LEFT$(FFN$,LEN(FFN$)-1):WEND
  1039. 20310  WHILE RIGHT$(FFN$,1)=CHR$(0):FFN$=LEFT$(FFN$,LEN(FFN$)-1):WEND
  1040. 20320  FS_D1$="":IF FFN$="" THEN 20390
  1041. 20330  FOR FS_I=1 TO LEN(FFN$)
  1042. 20340    FS_D2$=MID$(FFN$,FS_I,1)
  1043. 20350    FS_D2$=CHR$(ASC(FS_D2$)+(ASC(FS_D2$)>96 AND ASC(FS_D2$)<123)*32)
  1044. 20360    FS_D1$=FS_D1$+FS_D2$
  1045. 20370  NEXT
  1046. 20380  FFN$=FS_D1$+".FMB"
  1047. 20390  WHILE LEFT$(PFN$,1)=" ":PFN$=RIGHT$(PFN$,LEN(PFN$)-1):WEND
  1048. 20400  WHILE LEFT$(PFN$,1)=CHR$(0):PFN$=RIGHT$(PFN$,LEN(PFN$)-1):WEND
  1049. 20410  WHILE RIGHT$(PFN$,1)=" ":PFN$=LEFT$(PFN$,LEN(PFN$)-1):WEND
  1050. 20420  WHILE RIGHT$(PFN$,1)=CHR$(0):PFN$=LEFT$(PFN$,LEN(PFN$)-1):WEND
  1051. 20430  FS_D1$="":IF PFN$="" THEN 20500
  1052. 20440  FOR FS_I=1 TO LEN(PFN$)
  1053. 20450    FS_D2$=MID$(PFN$,FS_I,1)
  1054. 20460    FS_D2$=CHR$(ASC(FS_D2$)+(ASC(FS_D2$)>96 AND ASC(FS_D2$)<123)*32)
  1055. 20470    FS_D1$=FS_D1$+FS_D2$
  1056. 20480  NEXT
  1057. 20490  PFN$=FS_D1$+".PMB"
  1058. 20500  IF FFN$<>"" THEN LOAD@ FFN$
  1059. 20510  IF PFN$<>"" THEN LOAD@ PFN$
  1060. 20520  LOAD@ FS_PRA$,EP,1:F_SHAPE=80:GOSUB *F_マウスカーソル設定
  1061. 20530  ON ERROR GOTO *MULTIV_ERR:RETURN
  1062. 20540 *EUP_ERR
  1063. 20550  GET@A(160,120)-(479,239),SCRN2%
  1064. 20560   GUI_SX=160:GUI_SY=120:GUI_EX=479:GUI_EY=239:GUI_COL=6:GUI_BTTYPE=2:GOSUB *GUI_BTNPUT
  1065. 20570   GUI_SX=162:GUI_SY=218:GUI_EX=477:GUI_EY=237:GUI_COL=6:GUI_BTTYPE=1:GOSUB *GUI_BTNPUT
  1066. 20580   IF ERR=63 AND ERL=20500 THEN SYMBOL(170,160),"FM音色ファイルが見つかりません.",.75!,.75!,%8:GOTO 20620
  1067. 20590   IF ERR=63 AND ERL=20510 THEN SYMBOL(170,160),"PCM音色ファイルが見つかりません.",.75!,.75!,%8:GOTO 20620
  1068. 20600   IF ERR=55 THEN PUT@A(160,120)-(479,239),SCRN2%:RESUME NEXT
  1069. 20610   GOTO 19810:'SYMBOL(170,160),STR$(ERL)+"行でエラー"+STR$(ERR)+"が発生しました。",.75!,.75!,%8
  1070. 20620  '
  1071. 20630  SYMBOL(446,221),"確 認",.75!,.75!,%8:MOUSE 1,,,1
  1072. 20640  WHILE MOX<162 OR MOX>477 OR MOY<218 OR MOY>237 AND MOUSE(2,0)=0
  1073. 20650   MOX=MOUSE(0):MOY=MOUSE(1)
  1074. 20660  WEND:DUM=MOUSE(6,0)
  1075. 20670  LINE(162,218)-(477,237),XOR,%7,BF
  1076. 20680  WHILE MBT=0
  1077. 20690   MBT=MOUSE(6,0)
  1078. 20700  WEND
  1079. 20710  LINE(162,218)-(477,237),XOR,%7,BF
  1080. 20720  PUT@A(160,120)-(479,239),SCRN2%
  1081. 20730  RESUME NEXT
  1082. 20740 *FILE_ERASE
  1083. 20750  LINE(108,0)-(178,1),PSET,%15,BF
  1084. 20760  LINE(107,0)-(108,19),PSET,%15,BF
  1085. 20770  LINE(109,18)-(178,19),PSET,%0,BF
  1086. 20780  LINE(177,2)-(178,19),PSET,%0,BF
  1087. 20790  PSET(178,1),%0:PSET(108,19),%0
  1088. 20800 RETURN
  1089. 20810 *CD_ERASE
  1090. 20820  LINE(180,0)-(228,1),PSET,%15,BF:LINE(179,0)-(180,19),PSET,%15,BF:PSET(228,1),%0
  1091. 20830  LINE(181,18)-(226,19),PSET,%0,BF:LINE(227,2)-(228,19),PSET,%0,BF:PSET(180,19),%0
  1092. 20840 RETURN
  1093. 20850 *MV_CDPLAY:NEF=1
  1094. 20860  PLAY STOP:ON ERROR GOTO *CDP_ERR
  1095. 20870  GET@A(180,60)-(331,189),SCRN2%
  1096. 20880  PUT@A(180,60)-(331,189),CDPLAY!:GOSUB *CDP_DISP
  1097. 20890  *CDP_MAIN:CDIFL=1
  1098. 20900   WHILE MOUSE(2,0)=0:GOSUB *CDP_DISP:WEND
  1099. 20910   LX=MOUSE(0):LY=MOUSE(1)
  1100. 20920   IF LX>=182 AND LX=<194 AND LY>=62 AND LY=<74 THEN *PUS_CLOSE
  1101. 20930   IF LX>=189 AND LX=<238 AND LY>=111 AND LY=<134 THEN *PUS_PLAY
  1102. 20940   IF LX>=189 AND LX=<264 AND LY>=135 AND LY=<154 THEN *PUS_STOP
  1103. 20950   IF LX>=239 AND LX=<264 AND LY>=111 AND LY=<134 THEN *PUS_PAUSE
  1104. 20960   IF LX>=265 AND LX=<294 AND LY>=111 AND LY=<134 THEN *PUS_PREV
  1105. 20970   IF LX>=295 AND LX=<323 AND LY>=111 AND LY=<134 THEN *PUS_NEXT
  1106. 20980   IF LX>=265 AND LX=<323 AND LY>=135 AND LY=<154 THEN *PUS_REP
  1107. 20990   IF LX>=193 AND LX=<319 AND LY>=162 AND LY=<170 THEN *PUS_VOL
  1108. 21000  GOTO *CDP_MAIN
  1109. 21010  *PUS_CLOSE
  1110. 21020   LINE(182,62)-(194,74),XOR,%7,BF
  1111. 21030   WHILE MOUSE(2,0)=-1
  1112. 21040   IF MOUSE(0)<182 OR MOUSE(0)>194 OR MOUSE(1)<62 OR MOUSE(1)>74 THEN
  1113. 21050    LINE(182,62)-(194,74),XOR,%7,BF:GOTO *CDP_MAIN
  1114. 21060   ENDIF
  1115. 21070   WEND:LINE(182,62)-(194,74),XOR,%7,BF:PUT@A(180,60)-(331,189),SCRN2%:ON ERROR GOTO *MULTIV_ERR:RETURN
  1116. 21080  *PUS_PLAY
  1117. 21090   LINE(189,111)-(238,134),PSET,%7,B
  1118. 21100   WHILE MOUSE(2,0)=-1
  1119. 21110   IF MOUSE(0)<189 OR MOUSE(0)>238 OR MOUSE(1)<111 OR MOUSE(1)>134 THEN 
  1120. 21120    LINE(189,111)-(237,111),PSET,%15
  1121. 21130    LINE(189,112)-(189,133),PSET,%15
  1122. 21140    LINE(189,134)-(238,134),PSET,%8
  1123. 21150    LINE(238,111)-(238,133),PSET,%8
  1124. 21160    GOTO *CDP_MAIN
  1125. 21170   ENDIF
  1126. 21180   WEND:IF PAUSFLAG=1 THEN LINE(288,86)-(292,92),PSET,%0,BF:NUM&=3:GOSUB *MV_CDPROC:PAUSFLAG=0:GOTO 21210
  1127. 21185   IF CDR_INFO%(1)=1 THEN 21210
  1128. 21190   NUM&=1:IF TRACK&=0 THEN CDINF CDP_INFO%:IF CDP_INFO%(1)=3 THEN TRACK&=2 ELSE IF CDP_INFO%(1)=1 THEN TRACK&=1
  1129. 21200   IF CDP_INFO(1)<>2 THEN GOSUB *MV_CDPROC
  1130. 21210   LINE(189,111)-(237,111),PSET,%15
  1131. 21220   LINE(189,112)-(189,133),PSET,%15
  1132. 21230   LINE(189,134)-(238,134),PSET,%8
  1133. 21240   LINE(238,111)-(238,133),PSET,%8
  1134. 21250   HICDRI(6)=1:HICDRI(7)=1:GOTO *CDP_MAIN
  1135. 21260  *PUS_STOP
  1136. 21270   LINE(189,135)-(264,154),PSET,%7,B
  1137. 21280   WHILE MOUSE(2,0)=-1
  1138. 21290    IF MOUSE(0)<189 OR MOUSE(0)>264 OR MOUSE(1)<135 OR MOUSE(1)>154 THEN
  1139. 21300     LINE(189,135)-(263,135),PSET,%15
  1140. 21310     LINE(189,136)-(189,153),PSET,%15
  1141. 21320     LINE(189,154)-(264,154),PSET,%8
  1142. 21330     LINE(264,135)-(264,153),PSET,%8
  1143. 21340     GOSUB *CDP_DISP:GOTO *CDP_MAIN
  1144. 21350    ENDIF
  1145. 21360   WEND
  1146. 21370   NUM&=0:GOSUB *MV_CDPROC:TRACK&=0:PAUSFLAG=0:LINE(288,86)-(292,92),PSET,%0,BF
  1147. 21380   LINE(189,135)-(263,135),PSET,%15
  1148. 21390   LINE(189,136)-(189,153),PSET,%15
  1149. 21400   LINE(189,154)-(264,154),PSET,%8
  1150. 21410   LINE(264,135)-(264,153),PSET,%8
  1151. 21420   ZRFL=0:INNFL=0:GOTO *CDP_MAIN
  1152. 21430  *PUS_PAUSE
  1153. 21440   LINE(239,111)-(264,134),PSET,%7,B
  1154. 21450   WHILE MOUSE(2,0)=-1
  1155. 21460    IF MOUSE(0)<239 OR MOUSE(0)>264 OR MOUSE(1)<111 OR MOUSE(1)>134 THEN
  1156. 21470     LINE(239,111)-(263,111),PSET,%15
  1157. 21480     LINE(239,112)-(239,133),PSET,%15
  1158. 21490     LINE(239,134)-(264,134),PSET,%8
  1159. 21500     LINE(264,111)-(264,133),PSET,%8
  1160. 21510     GOTO *CDP_MAIN
  1161. 21520    ENDIF
  1162. 21530   WEND
  1163. 21540   IF PAUSFLAG=0 AND CDR_INFO%(1)=1 THEN
  1164. 21550    LINE(288,86)-(289,92),PSET,%15,B:LINE(291,86)-(292,92),PSET,%15,B
  1165. 21560    NUM&=2:GOSUB *MV_CDPROC
  1166. 21570   ENDIF
  1167. 21580   IF PAUSFLAG=1 THEN
  1168. 21590    LINE(288,86)-(292,92),PSET,%0,BF
  1169. 21600    NUM&=3:GOSUB *MV_CDPROC
  1170. 21610   ENDIF
  1171. 21620   LINE(239,111)-(263,111),PSET,%15
  1172. 21630   LINE(239,112)-(239,133),PSET,%15
  1173. 21640   LINE(239,134)-(264,134),PSET,%8
  1174. 21650   LINE(264,111)-(264,133),PSET,%8:IF PAUSFLAG=0 AND CDR_INFO%(1)=1 THEN PAUSFLAG=1 ELSE PAUSFLAG=0
  1175. 21660   GOTO *CDP_MAIN
  1176. 21670  *PUS_PREV
  1177. 21680   LINE(265,111)-(294,134),PSET,%7,B
  1178. 21690   WHILE MOUSE(2,0)=-1
  1179. 21700    IF MOUSE(0)<265 OR MOUSE(0)>294 OR MOUSE(1)<111 OR MOUSE(1)>134 THEN
  1180. 21710     LINE(265,111)-(293,111),PSET,%15
  1181. 21720     LINE(265,112)-(265,133),PSET,%15
  1182. 21730     LINE(265,134)-(294,134),PSET,%8
  1183. 21740     LINE(294,111)-(294,133),PSET,%8
  1184. 21750     GOTO *CDP_MAIN
  1185. 21760    ENDIF
  1186. 21770   WEND
  1187. 21780   NUM&=1:TRACK&=TRACK&-1:IF TRACK&>0 AND CDR_INFO%(1)=1 AND CDR_INFO%(7)=0 THEN GOSUB *MV_CDPROC ELSE IF CDR_INFO%(1)=1 THEN TRACK&=TRACK&+1:GOSUB *MV_CDPROC
  1188. 21790   IF EAX&<>0 THEN TRACK&=2:IF CDR_INFO(1)=1 THEN GOSUB *MV_CDPROC
  1189. 21800   LINE(265,111)-(293,111),PSET,%15
  1190. 21810   LINE(265,112)-(265,133),PSET,%15
  1191. 21820   LINE(265,134)-(294,134),PSET,%8:LINE(226,93)-(238,104),PSET,%0,BF
  1192. 21830   LINE(294,111)-(294,133),PSET,%8:LINE(251,93)-(263,104),PSET,%0,BF
  1193. 21840   ZRFL=0:GOTO *CDP_MAIN
  1194. 21850  *PUS_NEXT
  1195. 21860   LINE(295,111)-(323,134),PSET,%7,B
  1196. 21870   WHILE MOUSE(2,0)=-1
  1197. 21880    IF MOUSE(0)<295 OR MOUSE(0)>323 OR MOUSE(1)<111 OR MOUSE(1)>134 THEN
  1198. 21890     LINE(295,111)-(322,111),PSET,%15
  1199. 21900     LINE(295,112)-(295,133),PSET,%15
  1200. 21910     LINE(295,134)-(323,134),PSET,%8
  1201. 21920     LINE(323,111)-(323,133),PSET,%8
  1202. 21930     GOTO *CDP_MAIN
  1203. 21940    ENDIF
  1204. 21950   WEND
  1205. 21960   NUM&=1:TRACK&=TRACK&+1:IF TRACK&<=CDP_INFO%(5) AND CDR_INFO%(1)=1 THEN GOSUB *MV_CDPROC:ZRFL=0 ELSE IF TRACK&>CDP_INFO%(5) THEN TRACK&=CDP_INFO%(5)
  1206. 21970   LINE(295,111)-(322,111),PSET,%15
  1207. 21980   LINE(295,112)-(295,133),PSET,%15
  1208. 21990   LINE(295,134)-(323,134),PSET,%8:IF CDR_INFO%(1)=0 THEN LINE(226,93)-(238,104),PSET,%0,BF
  1209. 22000   LINE(323,111)-(323,133),PSET,%8:IF CDR_INFO%(1)=0 THEN LINE(251,93)-(263,104),PSET,%0,BF
  1210. 22010   GOTO *CDP_MAIN
  1211. 22020  *PUS_REP
  1212. 22030   LINE(265,135)-(323,154),PSET,%7,B
  1213. 22040   WHILE MOUSE(2,0)=-1
  1214. 22050    IF MOUSE(0)<265 OR MOUSE(0)>323 OR MOUSE(1)<135 OR MOUSE(1)>154 THEN
  1215. 22060     LINE(265,135)-(322,135),PSET,%15
  1216. 22070     LINE(265,136)-(265,153),PSET,%15
  1217. 22080     LINE(265,154)-(323,154),PSET,%8
  1218. 22090     LINE(323,135)-(323,153),PSET,%8
  1219. 22100     GOTO *CDP_MAIN
  1220. 22110    ENDIF
  1221. 22120   WEND
  1222. 22130   IF STYLE&=1 THEN PUT@A(275,96)-(293,103),REPEAT!
  1223. 22140   IF STYLE&=3 THEN LINE(277,98)-(278,103),PSET,%15,B:PSET(276,99)
  1224. 22150   IF STYLE&=2 THEN LINE(275,96)-(293,103),PSET,%0,BF
  1225. 22160   IF STYLE&=1 THEN STYLE&=3 ELSE IF STYLE&=3 THEN STYLE&=2 ELSE STYLE&=1
  1226. 22170   LINE(265,135)-(322,135),PSET,%15
  1227. 22180   LINE(265,136)-(265,153),PSET,%15
  1228. 22190   LINE(265,154)-(323,154),PSET,%8
  1229. 22200   LINE(323,135)-(323,153),PSET,%8
  1230. 22210   GOTO *CDP_MAIN
  1231. 22220  *PUS_VOL
  1232. 22230   WHILE MOUSE(2,0)=-1
  1233. 22240    PX=MOUSE(0):PY=MOUSE(1):VOL=PX-192
  1234. 22250    IF PX<193 OR PX>319 OR PY<162 OR PY>170 THEN *CDP_MAIN
  1235. 22260    IF HVOL<>VOL THEN
  1236. 22270     IF VOL>127 THEN VOL=127:CD VOL 127,127 ELSE IF VOL<0 THEN VOL=0:CD VOL 0,0 ELSE CD VOL VOL,VOL
  1237. 22280     IF HVOL<VOL THEN
  1238. 22290      IF VOL>100 THEN LINE(193,162)-(292,170),PSET,%5,BF:LINE(293,162)-(192+VOL,170),PSET,%10,BF
  1239. 22300      IF VOL<100 THEN LINE(193,162)-(192+VOL,170),PSET,%5,BF
  1240. 22310      HVOL=VOL
  1241. 22320     ELSE
  1242. 22330      LINE(193+VOL,162)-(319,170),PSET,%7,BF
  1243. 22340      HVOL=VOL
  1244. 22350     ENDIF
  1245. 22360    ENDIF
  1246. 22370   WEND 
  1247. 22380   GOTO *CDP_MAIN
  1248. 22390 *MV_CDPROC
  1249. 22400 'ON ERROR GOTO *ERROR
  1250. 22410 CD_PLAY&=91024
  1251. 22420   '機能番号を指定してください
  1252. 22430   '(0:演奏停止 1:演奏開始   2:演奏一時停止
  1253. 22440   ' 3:演奏再開 4:総曲数取得 5:演奏中曲番号の取得)
  1254. 22450   'INPUT NUM&
  1255. 22460   IF NUM&=1 THEN
  1256. 22470     '曲番を指定してください--TRACK&
  1257. 22480     '演奏形式を指定してください
  1258. 22490     '    (0:単曲通常 1:全曲通常 2:単曲反復 3:全曲反復)--STYLE&
  1259. 22500     EAX&=CALLM (CD_PLAY&,NUM&,TRACK&,STYLE&)
  1260. 22510   ELSE
  1261. 22520     EAX&=CALLM (CD_PLAY&,NUM&)
  1262. 22530   ENDIF
  1263. 22540   RETURN
  1264. 22550 *CDP_ERR
  1265. 22560  IF ERL=21190 THEN CDIFL=0:PLFL=0:CDR_INFO%(1)=0:PAUSFLAG=0:RESUME NEXT
  1266. 22570  IF ERL=22610 THEN CDIFL=0:PLFL=0:CDR_INFO%(1)=0:PAUSFLAG=0:RESUME NEXT
  1267. 22580  IF ERL=22620 THEN CDIFL=0:PLFL=0:CDR_INFO%(1)=0:PAUSFLAG=0:RESUME NEXT
  1268. 22590  RESUME NEXT
  1269. 22600 *CDP_DISP:
  1270. 22610  CDINF CDP_INFO%:IF CDIFL=0 THEN CDIFL=1:INNFL=0
  1271. 22620  CDSTAT CDR_INFO%:IF TRACK&<>CDR_INFO%(5) AND CDR_INFO%(1)=1 THEN TRACK&=CDR_INFO%(5)
  1272. 22630  IF CDIFL=1 AND HICDRI%(5)<>TRACK& THEN LINE(191,92)-(214,103),PSET,%0,BF:SYMBOL(191,92),KRIGHT$(AKCNV$(STR$(TRACK&)),2),.75!,.75!,%13,,,1:HICDRI%(5)=TRACK&
  1273. 22640  IF CDIFL=1 AND NEF=1 THEN SYMBOL(191,92),KRIGHT$(AKCNV$(STR$(TRACK&)),2),.75!,.75!,%13,,,1
  1274. 22650  IF CDIFL=1 THEN LINE(300,86)-(318,103),PSET,%0,BF
  1275. 22660  IF CDIFL=0 THEN LINE(191,92)-(214,103),PSET,%0,BF:PUT@A(300,86)-(318,103),NODISC!:LINE(288,86)-(292,92),PSET,%0,BF
  1276. 22670  IF CDIFL=0 THEN LINE(226,92)-(238,103),PSET,%0,BF:LINE(251,92)-(263,103),PSET,%0,BF
  1277. 22680  IF CDR_INFO%(1)=1 AND HICDRI%(6)<>CDR_INFO%(6) THEN LINE(226,93)-(238,104),PSET,%0,BF:SYMBOL(226,93),RIGHT$(" "+RIGHT$(STR$(CDR_INFO%(6)),LEN(STR$(CDR_INFO%(6)))),2),.75!,.75!,%14,,,1:HICDRI%(6)=CDR_INFO%(6)
  1278. 22690  IF CDR_INFO%(1)=1 AND CDR_INFO%(6)=0 AND ZRFL=0 THEN LINE(226,93)-(238,104),PSET,%0,BF:SYMBOL(226,93)," 0",.75!,.75!,%14,,,1
  1279. 22700  IF CDR_INFO%(1)=1 AND NEF=1 THEN SYMBOL(226,93),RIGHT$(" "+RIGHT$(STR$(CDR_INFO%(6)),LEN(STR$(CDP_INFO%(6)))),2),.75!,.75!,%14,,,1
  1280. 22710  IF CDR_INFO%(1)=1 AND HICDRI%(7)<>CDR_INFO%(7) THEN LINE(251,93)-(263,104),PSET,%0,BF:SYMBOL(251,93),RIGHT$("0"+RIGHT$(STR$(CDR_INFO%(7)),LEN(STR$(CDR_INFO%(7)))-1),2),.75!,.75!,%14,,,1:HICDRI%(7)=CDR_INFO%(7)
  1281. 22720  IF CDR_INFO%(1)=1 AND CDR_INFO%(7)=0 AND ZRFL=0 THEN LINE(251,93)-(263,104),PSET,%0,BF:SYMBOL(251,93),"00",.75!,.75!,%14,,,1:ZRFL=1
  1282. 22730  IF CDR_INFO%(1)=1 AND NEF=1 THEN SYMBOL(251,93),RIGHT$("0"+RIGHT$(STR$(CDR_INFO%(7)),LEN(STR$(CDP_INFO%(7)))-1),2),.75!,.75!,%14,,,1
  1283. 22740  IF CDR_INFO%(1)=0 AND STFL=0 AND PAUSFLAG=0 THEN LINE(226,93)-(238,104),PSET,%0,BF:LINE(251,93)-(263,104),PSET,%0,BF:PLFL=0
  1284. 22750  IF CDR_INFO%(1)=1 AND PLFL=0 THEN CONNECT(275,86)-(284,89)-(275,92),%15,PSET,F,%15:PLFL=1:STFL=0
  1285. 22760  IF CDR_INFO%(1)=0 AND STFL=0 AND PAUSFLAG=0 THEN LINE(275,86)-(284,92),PSET,%0,BF:STFL=1
  1286. 22770  IF NEF=1 AND STYLE&>2 THEN PUT@A(275,96)-(293,103),REPEAT!
  1287. 22780  IF NEF=1 AND STYLE&>1 THEN LINE(277,98)-(278,103),PSET,%15,B:PSET(276,99)
  1288. 22790  IF NEF=1 AND PAUSFLAG=1 THEN CONNECT(275,86)-(284,89)-(275,92),%15,PSET,F,%15:LINE(288,86)-(289,92),PSET,%15,B:LINE(291,86)-(292,92),PSET,%15,B
  1289. 22800  IF NEF=1 AND CDR_INFO%(1)=1 THEN CONNECT(275,86)-(284,89)-(275,92),%15,PSET,F,%15
  1290. 22810  IF NEF=1 THEN LINE(193+VOL,162)-(319,170),PSET,%7,BF
  1291. 22820  IF NEF=1 THEN NEF=0
  1292. 22821  IF CDR_INFO%(1)=0 AND CDIFL=1 AND PAUSFLAG=0 AND INNFL=0 THEN
  1293. 22822   LINE(191,92)-(214,103),PSET,%0,BF:SYMBOL(191,92),KRIGHT$(AKCNV$(STR$(CDP_INFO%(5))),2),.75!,.75!,%13,,,1
  1294. 22823   LINE(226,93)-(238,104),PSET,%0,BF:SYMBOL(226,93),RIGHT$("0"+RIGHT$(STR$(INT(CDP_INFO%(2))),LEN(STR$(INT(CDP_INFO%(2))))-1),2),.75!,.75!,%14,,,1
  1295. 22824   LINE(251,93)-(263,104),PSET,%0,BF:SYMBOL(251,93),RIGHT$("0"+RIGHT$(STR$(CDP_INFO%(3) MOD 60),LEN(STR$(CDP_INFO%(3) MOD 60))-1),2),.75!,.75!,%14,,,1:INNFL=1
  1296. 22825 ENDIF
  1297. 22830 RETURN
  1298.